标题:[讨论]第五期题目,大家做做.
只看楼主
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 
第1题有个初步想法.
首先判断输入数的长度(晕,不知道哪个函数).
1位数总长度有9
2位数总长度有180
3位数总长度有2700
.......
得到长度X.
如果189<X<2889(说明这个数的长度为3).用(X-189)/3得的数为这个数.余数为这个数字的数位.分别为210(就是余2为百位上的数……)。

函数有伐?提供个。见识少了点。呵呵~

晕。错了错了喃。把题目的数字的排列弄错了。郁闷!

[此贴子已经被作者于2006-12-11 19:48:49编辑过]


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-12-11 17:49
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
得分:0 

取对数应该可以吧!log10()


该学习了。。。
2006-12-11 18:30
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 

可以么?我都快忘了怎么取了喃。我记得有求长度的嘛。你也不知道嘛?


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-12-11 18:32
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
得分:0 

将一个数取对数之后加1就是这个数的长度吧!100的对数是2那么它的长度就是3。


该学习了。。。
2006-12-11 19:10
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 
汗了。弄错了。T。T再来看看。。。刚刚写成12345678901011之类的了。汗。

[此贴子已经被作者于2006-12-11 19:58:15编辑过]



人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-12-11 19:47
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
得分:0 
我想问一下,版主你的题都是在那里找的?

该学习了。。。
2006-12-12 14:17
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
浙江大学ACM里的.

第一个我还没做出来,想看看大家有什么高招.郁闷着...
大家帮忙啊

倚天照海花无数,流水高山心自知。
2006-12-12 20:36
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 
饿,晕这么复杂。昨天头痛。。。身体不佳。

今天上课的时候又想了想。貌似可以这样。

这里先写个算只有个位数的办法。

main()
{
long x;
int i;
scanf("%d",x);

if(x<=45)
for(i=1;;i++)
if(i*(i+1)/2>=x) break;

x=x-i*(i-1)/2;

printf("%d",x);
}
这个还没测试过。没编译器。
这里只是个位的数。也就是X不能大于45~。

2位数的也有考虑到。貌似也行。就是还有点问题。回去再想想。

[此贴子已经被作者于2006-12-12 21:31:36编辑过]


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-12-12 21:18
senyee
Rank: 1
等 级:新手上路
帖 子:422
专家分:0
注 册:2006-11-28
得分:0 
第一题的题意还是不怎么懂
英语水平有限.....
能介绍清楚点吗?

菜鸟~~请多指教~~
2006-12-12 21:35
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
得分:0 
饿,不好意思。输入总是没考虑。

2位数也是类似的方法。

首先知道2位数后到99有多长,在这里我算来算去都有点问题。我晕饿。

if(x>45&&x<=2位数总长)
for(i=10;;i++)
if(i*(i+1)/2>=x)
break;

x=x-i*(i-1)/2;
这里X可能大于9,不大于就是个位数。

大于9说明是2位数。
x就减去9,然后再除以2,有余数就要在商上+1+9,就等于这个数,且是十位上的数。
没有余数就说明是个位上的数。

饿,思路是有点乱的。不知道能否看懂。我回去写写看。

人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2006-12-12 21:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-108628-1-1.html




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

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