
题目如下:给出一个整数 n(1<=n<=20000000),要求输出从 1 到 n 间所有数字中“ 1 ”的出现次数.例如:数字 11 , 1 到 11 间数字“ 1 ”的出现次数为 4 。( 1 , 10 , 11 , 11 出现 4 次,因为 11 有两个 1 ,所以出现 4 次)
结果都是对的啊,为什么提交后显示 wrong answer 呢?
我的代码
#include<stdio.h> #include<stdlib.h> int pow[8] = {1,10,100,1000,10000,100000,1000000,10000000}; int f(int n){ if(n==1)return 1; else return 9*sn(n-1)+pow[n-1]; } int sn(int n){ int i,s=0; for(i=0;i<n;i++)s+=f(i+1); return s; } int ra(int n,int *a,int *m){ int k=10000000,i=8; while(n/k==0){ k/=10,i--; } *a=n/k; *m=i; return n-n/k*k; } int gn(int n){ int a,m,nn; if(n==0)return 0; if(n<10)return 1; nn=ra(n,&a,&m); if(a==1) return gn(nn)+a*sn(m-1)+nn+1; else return gn(nn)+a*sn(m-1)+pow[m-1]; } int main(){ int n; scanf("%d",&n); printf("%d\n",gn(n)); return 0; } 1 c742435 Oct 6, 2015 via iPad 你这个貌似只能处理一个输入?问题应该不止一个输入吧 |
3 c742435 Oct 6, 2015 via iPad 你试试改成能处理多个的还 wa 不 |