本文共 947 字,大约阅读时间需要 3 分钟。
数学题:
三种情况讨论即可
if(num[i] > 1) ans += (sumfront[i]+1)*base[i];if(num[i] == 1) ans += sumfront[i]*base[i] + sumback[i] + 1;if(num[i] == 0) ans += sumfront[i]*base[i];
关于代码解释:
代码:
#includeusing namespace std;int main(){ int n; scanf("%d",&n); int num[10]; int sumfront[10]; int base[10]; int sumback[10]; memset(num,0,sizeof(num)); memset(sumfront,0,sizeof(sumfront)); memset(base,0,sizeof(base)); memset(sumback,0,sizeof(sumback)); base[1] = 1; for(int i=2;i<10;i++) base[i] = base[i-1]*10; int loc = 1; while(n>0){ int mod = n%10; n/=10; num[loc++] = mod; } for(int i=1;i =1;i--) sumfront[i] = sumfront[i+1]*10 + num[i+1]; int ans = 0; for(int i=0;i 1) ans += (sumfront[i]+1)*base[i]; if(num[i] == 1) ans += sumfront[i]*base[i] + sumback[i] + 1; if(num[i] == 0) ans += sumfront[i]*base[i]; } printf("%d\n",ans); return 0;}
转载地址:http://tywji.baihongyu.com/