算法思路:
采用遍历的算法,从1到M,一个一个计算1的个数。统计出来。
代码:
#include <iostream> using namespace std; int f(int m) { int n = 0; for (int b = 1;b <= m ;b++) { int i = b; while(i > 0) { if (i%10 == 1) { n++; } i = i/10; } } return n; } void main() { int m; cin >> m; for (int i = 1;i <= m;i++) { if (i == f(i)) { cout << i; } } }
截图:
总结:
思路很简单,复杂的写不出来。虽然知道怎么回事,但是编不出来。
由于算法复杂度太高,所以数字达到50000以上的数字,就需要运行好久才会出结果。