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 |
真是悲剧。。。和AC程序拍了好久 就是一样的。。可是不能过 唉!#include<cstdio> #include<cstring> #include<iostream> #include<string> using namespace std; int ans[10],ten[10]; int digNum[12][3]; char s[100]; void numTostring(int n){ int i,j; char str[100]; for(i=0;n;i++,n/=10) str[i]=n%10+'0'; for(j=0;j<i;j++) s[j]=str[i-j-1]; s[j]=0; //printf("wy %s\n",s); } void CountNum(int num,bool fuhao){ int i,j,k,sum,sum1,len,sum2; numTostring(num); for(i=0;s[i];i++){// choose the i-th digit for(j=sum=sum1=sum2=0;s[j];j++){//s[]->digNum if(j!=i) sum=sum*10+s[j]-'0'; if(j<i) sum1=sum1*10+s[j]-'0'; else if(i==j&&sum1) sum1--; else if(j>i) sum1=sum1*10+9; if(j<i) sum2=sum2*10+s[j]-'0'; else if(j>i) sum2=sum2*10+9; } digNum[i][0]=sum+1; if(i==0) digNum[i][1]=0; else digNum[i][1]=sum1+1; digNum[i][2]=sum2+1; } len=i; //for(i=0;s[i];i++) printf("%d ",digNum[i][0]);puts("等于"); //for(i=0;s[i];i++) printf("%d ",digNum[i][1]);puts("大于"); //for(i=0;s[i];i++) printf("%d ",digNum[i][2]);puts("小于"); for(i=0;s[i];i++){ for(j=0;j<10;j++){//dig 0->9 if(i==0&&j==0) continue;//第一位是 0 无效 /*if(j==0){ if(i!=0) ans[j]+=(digNum[i][0]-ten[len-i-1]); }*/ if(j+'0'==s[i]){ ans[j]+=digNum[i][0]; if(j==0) ans[j]-=ten[len-i-1]; } else if(j+'0'<s[i]){ ans[j]+=digNum[i][2]; if(j==0) ans[j]-=ten[len-i-1]; } else ans[j]+=digNum[i][1]; } } //for(i=0;i<10;i++) printf("%d ",ans[i]); puts(""); if(fuhao){ for(i=0;i<10;i++) ans[i]=-ans[i]; } } int main(){ int i,t,a,b; for(ten[0]=1,i=1;i<9;i++) ten[i]=ten[i-1]*10; while(cin>>a>>b){ if(a==0&&b==0) break; memset(ans,0,sizeof(ans)); if(a>b) t=a,a=b,b=t; CountNum(a-1,1); CountNum(b,0); for(i=0;i<9;i++) cout<<ans[i]<<" "; cout<<ans[9]<<endl; } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator