给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数
2013-08-17 17:56
671 查看
//给定一个十进制整数N,求出从1到N的所有整数中出现”1”的个数。 int cal_num_of_1(int n) { int count = 0; int temp; for (int i = 1; i<n+1; i++) { temp = i; while (temp>0) { if (temp%10 == 1) { count++; } temp = temp/10; } } return count; } int cal_num_of_1_2(int n) { //1的个数 int count = 0; //当前位 int factor = 1; //低位数字 int lower_num = 0; //当前位数字 int cur_num = 0; //高位数字 int higher_num = 0; if (n<=0) { return 0; } while (0 != n/factor) { //低位数字 lower_num = n-(n/factor)*factor; //当前位数字 cur_num = (n/factor)%10; //高位数字 higher_num = n/(factor*10); switch (cur_num) { case 0: count += higher_num*factor; //如果为0,出现1的次数由高位决定:等于高位数字 * 当前位数 break; case 1: count += higher_num*factor + lower_num + 1;//如果为1,出现1的次数由高位和低位决定:高位数字 * 当前位数 + 低位数字 + 1 break; default: count += higher_num*factor + factor; //如果大于1,出现1的次数由高位决定:(高位数字+1)* 当前位数 break; } factor *= 10; //前移一位 } return count; }
相关文章推荐
- 给定一个十进制n,从1开始,到n的所有整数,求出现1的个数
- 课堂练习:给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
- 给定一个十进制的整数,写下从1开始到N的所有整数,计算其中出现的所有"1"的个数
- 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数
- 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数。
- 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数
- 写正确函数需要注意的地方:给定一个十进制整数N,计算从1开始到N的所有整数出现的“1”的个数
- 给定一个十进制正整数N,求出从1开始,到N的所有整数,数字1出现的次数(java实现)
- <编程之美>给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有1的个数
- 给定一个十进制的正整数N,计算从1开始到N的的所有整数中1出现的个数
- 给定一个正整数N,从1到N所有整数,计算出现1的个数
- 给定一个整数数组,1≤a [i]≤n(n =数组的大小),一些元素出现两次,其他出现一次 查找在该数组中出现两次的所有元素
- 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中1的个数(编程之美P128)
- 编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符集合中出现的字符
- 给定整数数组,除了一个元素之外,每个元素都出现三次。 找到那个只出现一次的数
- 请编写一个函数,它在一个字符串中进行搜索,查找所有 在一个给定字符集合中出现的字符。
- 输出一个整数的每一位,计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,编写程序数一下 1到 100 的所有整数中出现多少次数字 9
- 给定一个整数,打印出它的所有素数因子--两种方法,两种效率。
- 给定一个十进制的正整数number,选择从里面去掉一部分数字,希望保留下来的数字组成的正整数最大。
- 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。