| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4249 人关注过本帖, 3 人收藏
标题:忙里偷闲娱乐一下 数数字(二) 24小时后结贴
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
程序代码:

#include <stdio.h>
#include <math.h>

#define N ((int)log10(1000000000000))

int main()
{

    int i = 1;        //几位数
    long long sum = (long long)i;    //1的个数

    for (i = 2; i <= N; i++)
    {
        printf("%I64d\n", sum);
        sum += sum * 9;
        sum += (long long)pow(10, i-1);
    }
    sum++;    //最后再加1 前面求的是1到999……的
   
    printf("%I64d\n", sum);
    return 0;
}


2012-06-20 11:24
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:0 
回复 29楼 handle09
我觉得不等价
为了比较,我们把0边为0000 0000 0000
 把1变为0000 0000 0001但请注意,前面的0使我们加上的就不能变为其他数字,概率不等。
另外26楼正解。
2012-06-20 12:45
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
回复 32楼 a745043791
如果,要数有多少个0的话,那么0000000000001与1不同,但现在是数一,那么上述两者就是一样。因为,对于1来说,12与2是不一样的。

[ 本帖最后由 回首依依 于 2012-6-20 13:58 编辑 ]
2012-06-20 13:55
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
干的不错!!
2012-06-20 14:19
逸枫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:33
专家分:113
注 册:2012-6-10
收藏
得分:0 
24小时的话。。。只能打酱油了=.=
2012-06-20 14:22
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:0 
回复 33楼 回首依依
额,我的意思是0不能作为首位,也不能算作位数。
1位:10^0+9*10^(-1)*0
2位10^1+9*10^0*1
3位10^2+9*10^1*2
4位10^3+9*10^2*3
……
2012-06-20 14:23
handle09
Rank: 1
等 级:新手上路
帖 子:7
专家分:1
注 册:2012-5-15
收藏
得分:0 
回复 36楼 a745043791
我还是觉得等价的
000000001和1不同只是我们的书写习惯不同
如果反过来从999999开始计数
完全可以不把它当做数来看的
9999999
9999998
9999997

0000000
0000001
0000002
都是一样的呀


[ 本帖最后由 handle09 于 2012-6-20 16:26 编辑 ]
2012-06-20 16:23
a745043791
Rank: 4
等 级:业余侠客
帖 子:95
专家分:260
注 册:2012-2-12
收藏
得分:0 
回复 37楼 handle09
座等结果,不过我觉得不是12000……1
2012-06-20 17:47
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
#include <stdio.h>

int main(void)
{
    long long n, i;
    int j;
    scanf("%lld", &n);
    for (i = 1, j = 0; n / i; i *= 10)
        j += ((n / i % 10) == 1);
    printf("%d\n", j);
    return 0;
}

My life is brilliant
2012-06-20 19:37
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
呵呵,大家讨论的很热烈么,很高兴看到这种气氛。

问题就是问题,不同的方法只是因为分析的角度不同而已。这里我是认可小曹在21楼的分析方法的,因为它这里唯一将理论简化到能口算程度的方法。

这个1万亿我是特意包含进去的,想看看谁会忘了数这个1。

希望通过这个小问题使各位在娱乐的同时,在开拓思维方面有所收获。

我改主意了,打算把分分给几位答对者。demonleer不会介意吧?以后我补分给你

重剑无锋,大巧不工
2012-06-20 20:59
快速回复:忙里偷闲娱乐一下 数数字(二) 24小时后结贴
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014494 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved