JudgeOnline.cn 在线评判一直提示错误

2015-10-06 06:04:40 +08:00
 kongrui05

题目如下:给出一个整数 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;
}
716 次点击
所在节点    C
4 条回复
c742435
2015-10-06 07:33:23 +08:00
你这个貌似只能处理一个输入?问题应该不止一个输入吧
hx1997
2015-10-06 07:49:32 +08:00
@c742435 不是只给出一个整数吗?
c742435
2015-10-06 07:55:40 +08:00
你试试改成能处理多个的还 wa 不
kongrui05
2015-10-06 14:07:30 +08:00
@c742435 改过还是 wa

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/225828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX