Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
有用从a到b一个一个数的思路却不超时的算法么?我tle#include<iostream.h> #include<string.h> #include<math.h> void main() { while(1) { char a[10]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'}, b[10]={'\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'},t[10]; long r[10]={0,0,0,0,0,0,0,0,0,0},i,j,begin=0,end=0; cin>>a>>b; if(a[0]=='0'&&b[0]=='0') break; strcpy(t,a); for(i=0;i<(long)strlen(a);i++) { begin+=(long)pow(10,strlen(a)-1-i)*(a[i]-48); a[i]=t[strlen(a)-1-i]; } strcpy(t,b); for(i=0;i<(long)strlen(b);i++) { end+=(long)pow(10,strlen(b)-1-i)*(b[i]-48); b[i]=t[strlen(b)-1-i]; } if(begin>end) { i=begin; begin=end; end=i; strcpy(t,a); strcpy(a,b); strcpy(b,t); } for(i=0;i<end-begin+1;i++) { for(j=0;j<(long)strlen(a);j++) r[a[j]-48]++; a[0]++; for(j=0;j<(long)strlen(a);j++) { if(a[j]>57) { a[j]-=10; if(a[j+1]=='\0') a[j+1]=49; else a[j+1]++; } } } for(i=0;i<10;i++) cout<<r[i]<<' '; cout<<endl; } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator