oj题目 统计1的个数

提交到OJ平台,显示答案错误,只有88分,是有哪个测试数据没有通过吗?

#include<iostream>

#include<math.h>

using namespace std;

int main() {

long long int num;

cin >> num;

int p = 1;//表示位数

int a[10];//存储每一位的数组

int j = 0;

long long int i;

long long NUM = 0;

for (i = 10; i < 1000000000; i = i * 10) {

if (num / i == 0) {

break;

}

else {

p++;

a[j] = (num / (i / 10)) % 10;

j++;

}

}

a[j] = (num / (i / 10)) % 10;

int np;//记录当前位数

long long int pnum;//记录前面的值ab

long long int nnum;//记录后面的值de

for (int j = 0; j < p; j++) {

np = j + 1;//当前位数

pnum = num / pow(10, np);

 

nnum = num % (long long int) (pow(10, np - 1));

 

if (a[j] == 0) {

NUM = NUM + pnum * pow(10, np - 1);

}

else if (a[j] == 1) {

NUM = NUM + pnum * pow(10, np - 1) + nnum + 1;

}

else if (a[j] > 1) {

NUM = NUM + (pnum + 1) * pow(10, np - 1);

}

}

cout << NUM<<endl;

}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^