标签:
题目:
给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int icount = 0, i, N, temp; 6 cout << "Please input the integer N,N="; 7 cin >> N; 8 for (i = 1; i <= N; i++) 9 { 10 temp = i;//用临时变量记录i的值 11 while (temp != 0)// 12 { 13 icount += (temp % 10 == 1) ? 1 : 0;//计算个位1出现的次数 14 temp /= 10;//将计算完的位数去掉(降位),继续计算剩下位数的个位是否出现1 15 } 16 } 17 cout << icount << endl; 18 return 0; 19 }
总结:该思路较为简单,就是计算每一个数拥有1的数量,最后累加得出结果,但是当N的数量变得很大时,程序运行效率极低,得出结果会花费大量的时间。
该代码不是很理想,而另一个思路是每一位出现1的次数个他的高低位都有关,但目前为止没有实现这个思路的代码。
标签:
原文地址:http://www.cnblogs.com/SanShaoS/p/4552494.html