12
返回列表 发新帖
楼主: wwwyhx
跳转到指定楼层
上一主题 下一主题
收起左侧

Google : 求1到n个数中,1出现的个数

🔗
MontagueHu 2011-6-20 08:51:11 | 只看该作者
全局:
本帖最后由 MontagueHu 于 2011-6-20 08:53 编辑

这道题很麻烦的,编程之美上面有分析,不是遍历所有数字的
回复

使用道具 举报

🔗
lambda2fei 2012-9-4 16:56:12 | 只看该作者
全局:
// count the number of occurrence of digit 'd' in series: 1, 2, 3, ..., n.
unsigned int DigitCounting(unsigned int n, unsigned int d) {
  unsigned int count = 0;
  for (unsigned int i = 1; true; i *= 10) {
    unsigned int q = n / (i * 10);
    unsigned int r = n % i;
    int dd = n / i % 10;
    if (n / i == 0 || dd < d && q == 0) break;
    if (dd != d) r = i - 1;
    if (dd < d || d == 0) --q;
    if (q >= 0) {
      count += q * i + r + 1;
    }
  }
  return count;
}
试试这个对不对,可以计算所有数字不仅仅是1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表