主题:书的页码问题
Kingdom匡
[专家分:0] 发布于 2012-12-01 14:03:00
一本书的页码,第一页是1,第二页是2,以此类推。每敲一次键盘就能打出一个数字,例如打出1需要敲一次,打出10需要两次。现在知道了总共敲打次数的总数n ,求这本书的页数。求一个程序
回复列表 (共3个回复)
沙发
养家小猫 [专家分:0] 发布于 2013-01-29 16:43:00
能把题目讲清楚吗?
板凳
星__极 [专家分:0] 发布于 2013-02-09 10:06:00
问题是:知道总数N,求页码?
第一页点1次,第二页点2次。。。
3 楼
bruceteen [专家分:42660] 发布于 2013-02-20 08:51:00
我猜可能楼主想表达的意思可能是:
假如页数为13,则 1,2,3,4,5,6,7,8,9,10,11,12,13 一共需要敲键盘17次
现在则反过来,已知需要敲键盘17次,求页数13
如果是这样的话
1-9页,每页需要敲键盘1次,共9页
10-99页,每页需要敲键盘2次,共90页
100-999页,每页需要敲键盘3次,共900页
…… 依次类推
[code=c]
#include <stdio.h>
int foo( int n )
{
int pages = 0;
int mul10 = 1;
int i = 1;
if( n < 0 )
return -1;
for( ; n>9*mul10*i; mul10*=10,++i )
{
pages += 9*mul10;
n -= 9*mul10*i;
}
if( n%i )
return -1;
pages += n/i;
return pages;
}
void test( int n )
{
int pages = foo(n);
if( pages == -1 )
printf( "不可能的敲击数\n" );
else
printf( "页数: %d\n", pages );
}
int main()
{
test( 8 );
test( 17 );
test( 261 );
return 0;
}
[/code]
我来回复