个位ch个数 + 十位ch个数 * 10 + 百位ch个数 * 100;同时如果某一位刚好等于ch,还需要减去多算的一部分值。
#include <stdio.h>

//整数1到n,字符ch出现的次数;如1到12,1出现5次
int count1s (int n, char ch){
int i = ch - '0';
int count = 0;
int j = 1;
int m = n;
int t = 0;
int k = 1; if (i == 0) i = 10;

     //循环比较最后一位,/10 移位
while (m > 0){
int t = i;
int count1 = 0;
while (t <= m){
count1++;
t += 10;
}
count += count1 * j;
j *= 10;
m /= 10;
} //减去多加的部分; 如110中计算1出现个数,在计算十位时多加9,需要减去。在计算百位是也多加了89,需要减去
m = n;
j = 0; while (m){
if (m % 10 == ch - '0'){
j = t;
if (j != 0){
int a = 0;
k = 1;
for (a = 0; a < j; a++) k *= 10;
count = count - (k - (n % k) - 1);
}
}
m /= 10;
t++;
} return count;
} #if 1 //普通的逐个整数比较的测试程序 //某个整数中1出现的次数
int NumberOfCh(unsigned int n, char ch)
{
int number = 0;
while (n)
{
if(n % 10 == ch - '0')
number ++;
n = n / 10;
} return number;
} //求1到n中所有整数中1出现的总次数
int ceshi(unsigned int n, char ch)
{
int number = 0;
int i = 1;
for(i = 1; i <= n; ++ i)
number += NumberOfCh(i, ch); return number;
}
#endif int main (void){
#if 0
int i = 0;
char ch = '0';
for (i = 0; i < 65535; i++){
for (ch = '0'; ch <= '9'; ch++){
if (count1s (i, ch) != ceshi (i, ch)){
printf ("%d %c\n", i, ch);
return -1;
}
}
printf ("%d\n", i);
}
#else
printf ("%d\n", count1s(1365535, '5')); printf ("%d\n", ceshi (1365535, '5')); #endif
}

  

最新文章

  1. quartz集群分布式(并发)部署解决方案-Spring
  2. Struts2批量验证(POC)
  3. man curl_easy_perform(原创)
  4. Unity3D默认的快捷键
  5. Delphi七个版本
  6. 自己随意写了个简单的依赖jquery的轮播图
  7. RTO &amp; RPO
  8. WebDriver使用指南(完整篇)
  9. iOS 通过代码关闭应用程序
  10. POJ 3191 The Moronic Cowmpouter(进制转换)
  11. php最短的HTTP响应代码
  12. Android Animation初识
  13. 大数相加a+b
  14. MySQL之数据的备份与还原
  15. maven 执行mvn package/clean命令出错
  16. centos下安装djangobb
  17. DataTables 1.10.x与1.9.x参数名对照表
  18. 【go】http实验
  19. H5音乐播放器【歌单列表】
  20. [转发]VMware厚置备延迟置零 、 厚置备置零、精简置备 区别

热门文章

  1. 如何处理Tomcat日志catalina.out日志文件过大的问题
  2. OC基础-day02
  3. cocos2dx系列笔记(1)- windows环境配置前篇
  4. 选取两个有序数组中最大的K个值,降序存入另一个数组中
  5. boost::xml————又一次失败的尝试
  6. 【POJ1707】【伯努利数】Sum of powers
  7. php 删除语句
  8. Python 学习之urllib模块---用于发送网络请求,获取数据(3)
  9. [python] 视频008
  10. MDK —— configuration wizard