for(i=0;i<=x-'A';i++)printf("%c"____);
printf("\n");
}
第七题:
中奖计算函数返回所中的最大连续数字的个数
intg(inta,intb)
{
charsa[]="00000000";
charsb[]="00000000";
intn;
inti,j;
sprintf(sa,"%8d",a);
sprintf(sb,"%8d",b);
for(i=0;i<8;i++)
{
for(j=1;j<=8-i;j++)
{
chart=______;
sa[i+j]=0;
if(strstr(sb,sa+i))
{
if(j>n)________;
}
sa[i+j]=t;
}
}
returnn;
}
*******************************************************************************
一、倒序数是将一个阿拉伯数的各位上的数字以逆序的形式写成的数。
该阿拉伯数的第一位变成最后位,最后位变成第一位。
例如数1245被写成5421。
注意产生的新数字前边所有的数字0是被略去的。
倒序数的尾部无多余的数字0。
请将阿拉伯数转变为倒序数。
输入
输入的第一行仅有一个正整数n,表示有n组测试数据。
接下来有n行,每一行是一组测试数据,长度不超过100。
每一行上的字符串表示一个非负整数,它是你需要转换的数。
输出
对每一组测试数据在一行上输出倒序数,该倒序数中前导的数字0被略去了。
输入样例输出样例
3
2442
43400434
305503(25分)
二、对一个正整数n,求出n!
中末尾0的个数。
输入
输入有若干行。
每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n≤1000000000)。
输出
对输入行中的每一个数据n,输出一行,其内容是n!
中末尾0的个数。
输入样例输出样例
3
30
10024
1024253(25分)
三、给定两个字符串a和b,定义式子a*b表示两个字符串的连接。
例如a=“abc”,b=“def”,则a*b=“abcdef”。
如果将连接看成乘法,则按照普遍的方法,一个非负整数的幂表示为:
a0=“”(theemptystring),
a(n+1)=a*(an)。
输入
输入字符串s,每组样例一行,s为可打印字符。
s的长度在1—1000000之间。
最后一组数据后为句号(.)。
输出
每个字符串s输出最大的n满足s=an,其中a为任意字符串。
输入样例输出样例
abcd1
aaaa4
ababab3(25分)
四、若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。
现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:
2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会希望你寻找出“最佳方案”。
输入
输入文件的第一行有一个正偶数N(N≤200),表示待挑选的自然数的个数。
第二行给出N个不超过30000的正整数,相邻的两个数之间用一个空格分开。
输出
对每个正整数,输出一个整数K,表示你求得的“最佳方案”组成“素数伴侣”的对数。
输入样例输出样例
42
25613
*******************************************************************************
蛇行矩阵
【问题描述】
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
【要求】
【数据输入】本题有多组数据,每组数据由一个正整数N组成。
(N不大于100)
【数据输出】对于每一组数据,输出一个N行的蛇形矩阵。
两组输出之间不要额外的空行。
矩阵三角中同一行的数字用一个空格分开。
行尾不要多余的空格。
【样例输入】
5
【样例输出】
1361015
25914
4813
712
11
敲七
【问题描述】
输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)
【要求】
【数据输入】一个整数N。
(N不大于30000)
【数据输出】从小到大排列的不大于N的与7有关的数字,每行一个。
【样例输入】
20
【样例输出】
7
14
17
小希的数表
【问题描述】
Gardon昨天给小希布置了一道作业,即根据一张由不超过5000的N(3<=N<=100)个正整数组成的数表两两相加得到N*(N-1)/2个和,然后再将它们排序。
例如,如果数表里含有四个数1,3,4,9,那么正确答案是4,5,7,10,12,13。
小希做完作业以后出去玩了一阵,可是下午回家时发现原来的那张数表不见了,好在她做出的答案还在,你能帮助她根据她的答案计算出原来的数表么?
【要求】
【数据输入】包含多组数据,每组数据以一个N开头,接下来的一行有按照大小顺序排列的N*(N-1)/2个数,是小希完成的答案。
文件最后以一个0结束。
假设输入保证解的存在性和唯一性。
【数据输出】对于每组数据,输出原来的数表。
它们也应当是按照顺序排列的。
【样例输入】
4
457101213
4
5678910
0
【样例输出】
1349
2346
士兵队列训练问题
TimeLimit:
2000/1000MS(Java/Others)MemoryLimit:
65536/32768K(Java/Others)
TotalSubmission(s):
462AcceptedSubmission(s):
185
【问题描述】
某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:
从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从头开始进行一至三报数,凡报到三的出列,剩下的向小序号方向靠拢,继续从头开始进行一至二报数。
。
。
,以后从头开始轮流进行一至二报数、一至三报数直到剩下的人数不超过三人为止。
【要求】
【数据输入】本题有多个测试数据组,第一行为组数N,接着为N行新兵人数,新兵人数不超过5000。
【数据输出】共有N行,分别对应输入的新兵人数,每行输出剩下的新兵最初的编号,编号之间有一个空格。
【样例输入】
2
20
40
【样例输出】
1719
11937
最简单的计算机
TimeLimit:
2000/1000MS(Java/Others)MemoryLimit:
65536/32768K(Java/Others)
TotalSubmission(s):
287AcceptedSubmission(s):
192
【问题描述】
一个名叫是PigHeadThree的研究组织设计了一台实验用的计算机,命名为PpMm。
PpMm只能执行简单的六种命令A,B,C,D,E,F;只有二个内存M1,M2;三个寄存器R1,R2,R3。
六种命令的含义如下:
命令A:
将内存M1的数据装到寄存器R1中;
命令B:
将内存M2的数据装到寄存器R2中;
命令C:
将寄存器R3的数据装到内存M1中;
命令D:
将寄存器R3的数据装到内存M2中;
命令E:
将寄存器R1中的数据和寄存器R2中的数据相加,结果放到寄存器R3中;
命令F:
将寄存器R1中的数据和寄存器R2中的数据相减,结果放到寄存器R3中。
你的任务是:
设计一个程序模拟PpMm的运行。
【要求】
【数据输入】有若干组,每组有2行,第一行是2个整数,分别表示M1和M2中的初始内容;第二行是一串长度不超过200的由大写字母A到F组成的命令串,命令串的含义如上所述。
【数据输出】对应每一组的输入,输出只有一行,二个整数,分别表示M1,M2的内容;其中M1和M2之间用逗号隔开。
其他说明:
R1,R2,R3的初始值为0,所有中间结果都在-2^31和2^31之间。
【样例输入】
100288
ABECED
876356321456
ABECAEDBECAF
【数据输出】
388,388
2717080,1519268
整数对
TimeLimit:
2000/1000MS(Java/Others)MemoryLimit:
65536/32768K(Java/Others)
TotalSubmission(s):
111AcceptedSubmission(s):
29
【问题描述】
Gardon和小希玩了一个游戏,Gardon随便想了一个数A(首位不能为0),把它去掉一个数字以后得到另外一个数B,他把A和B的和N告诉了小希,让小希猜想他原来想的数字。
不过为了公平起见,如果小希回答的数虽然不是A,但同样能达到那个条件(去掉其中的一个数字得到B,A和B之和是N),一样算小希胜利。
而且小希如果能答出多个符合条件的数字,就可以得到额外的糖果。
所以现在小希希望你编写一个程序,来帮助她找到尽可能多的解。
例如,Gardon想的是A=31,B=3告诉小希N=34,
小希除了回答31以外还可以回答27(27+7=34)所以小希可以因此而得到一个额外的糖果。
【要求】
【数据输入】输入包含多组数据,每组数据一行,包含一个数N(1<=N<=10^9),文件以0结尾。
【数据输出】对于每个输入的N,输出所有符合要求的解(按照大小顺序排列)如果没有这样的解,输出"Nosolution."
【样例输入】
34
152
21
0
【样例输出】
273132
126136139141
Nosolution.
3n+1数链问题
Timelimit:
1sMemorylimit:
32768K
TotalSubmit:
471AcceptedSubmit:
325
【问题描述】
在计算机科学上,有很多类问题是无法解决的,我们称之为不可解决问题。
然而,在很多情况我们并不知道哪一类问题可以解决,那一类问题不可解决。
现在我们就有这样一个问题,问题如下:
1.输入一个正整数n;
2.把n显示出来;
3.如果n=1则结束;
4.如果n是奇数则n变为,否则n变为n/2;
5.转入第2步。
例如对于输入的正整数22,应该有如下数列被显示出来:
221134175226134020105168421
我们推测:
对于任意一个正整数,经过以上算法最终会推到1。
尽管这个算法很简单,但我们仍然无法确定我们的推断是否正确。
不过好在我们有计算机,我们验证了对于小于1,000,000的正整数都满足以上推断。
对于给定的正整数n,我们把显示出来的数的个数定义为n的链长,例如22的链长为16。
你的任务是编写一个程序,对于任意一对正整数i和j,给出i、j之间的最长链长,当然这个最长链长是由i、j之间的其中一个正整数产生的。
我们这里的i、j之间即包括i也包括j。
【要求】
【数据输入】输入文件只有一行,即为正整数i和j,i和j之间以一个空格隔开。
0
【数据输出】文件只能有一行,即为i、j之间的最长链长。
【样例输入】
110
【样例输出】
20
数制转换
Timelimit:
1sMemorylimit:
32768K
TotalSubmit:
479AcceptedSubmit:
190
【问题描述】
有一种数制的基数是3,权值可以取-1,0,1,并分别用符号-,0,1表示,如这种数制的101表示十进制数的10,即1*(3^2)+0*(3^1)+1*(3^0)=10,又如这种数制的-0表示十进制数的-3,即-1*(3^1)+0*(3^0)=-3。
编程要求把给定的有符号整数转换为新数制的数,该数的前面不能有多余的0,如10的新数制表示是101,则不要输出成0101。
【要求】
【数据输入】文件有一行或多行,每行有一个整数N(-2,147,483,647≤N≤2,147,483,647),整数内不会有其他分隔符。
【数据输出】对输入文件的每一行输出一行,该行是输入行的整数的新数制表示,不能有多余空行,每行之前不能有前导空格。
【样例输入】
10
-3
【样例输出】
101
-0
矩阵取数游戏
Timelimit:
1sMemorylimit:
32768K
TotalSubmit:
150AcceptedSubmit:
27
【问题描述】
帅帅经常跟同学玩一个矩阵取数游戏:
对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数。
游戏规则如下:
1.每次取数时须从每行各取走一个元素,共n个。
m次后取完矩阵所有元素;
2.每次取走的各个元素只能是该元素所在行的行首或行尾;
3.每次取数都有一个得分值,为每行取数的得分之和,每行取数的得分=被取走的元素值*2i,其中i表示第i次取数(从1开始编号);
4.游戏结束总得分为m次取数得分之和。
帅帅想请你帮忙写一个程序,对于任意矩阵,可以求出取数后的最大得分。
【要求】
【数据输入】输入有多个测试数据,每个包括n+1行:
第1行为两个用空格隔开的整数n和m。
第2~n+1行为n*m矩阵,其中每行有m个用单个空格隔开的非负整数。
1<=n,m<=80,0<=aij<=1000
【数据输出】对每个数据,输出一行,为一个整数,即输入矩阵取数后的最大得分。
相邻两个输出间用一个空行隔开。
【样例输入】
14
4505
210
96565446861223888043
16951829305388836467
【样例输出】
122
316994
埃及分数
【问题描述】
在古埃及,人们使用单位分数的和(形如1/a的,a是自然数)表示一切有理数。
如:
2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。
对于一个分数a/b,表示方法有很多种,但是哪种最好呢?
首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。
如:
19/45=1/3+1/12+1/180
19/45=1/3+1/15+1/45
19/45=1/3+1/18+1/30,
19/45=1/4+1/6+1/180
19/45=1/5+1/6+1/18.
最好的是最后一种,因为1/18比1/180,1/45,1/30,1/180都大。
给出a,b(0〈a〈b〈1000),编程计算最好的表达方式。
【要求】
【数据输入】第一行:
N表示有N组测试数据,每组测试数据为一行包含a,b(0〈a〈b〈1000)。
【数据输出】每组测试数据若干个数,自小到大排列,依次是单位分数的分母。
【样例输入】
1
1945
【样例输出】
5618
H数
timelimit:
1seconds
memlimit:
32768K
Prev|Next
【问题描述】
让我们来做做DavidHilbert的一个练习题.
定义H数为4的正整数倍加1,比如:
1,5,9,13,17,21,25...都是H数.可以证明两个H数相乘结果还是H数.类似于整数,我们也可以把H数分为1,H素数和H合数.一个H数为H素数,当且仅当,它除了1和自己之外,没有其他的H数整除它.除了1和H素数外,其他的H数都是H合数.比如9是H素数,因为除了1和9之外没有其他的H数整除9;17和21也是H素数;45是H合数,45=5×9,25也是H合数,因为25=5×5.
你的任务是计算H半素数的个数.一个H数是H半素数,当且仅当,它能分解成两个H素数的乘积.
这两个H素数可以是同一个数.比如25是H半素数,25=5×5。
45也是H半素数,45=5×9,而125不是H半
素数,125=5×5×5,它可以分解成3个H素数的乘积.
给你一个H数n,要求你输出有多少个不大于n的H半素数.
【要求】
【数据输入】输入包括多组数据,每组数据输出一行,包括一个整数n,(n≤1,000,001)
最后一行为一个0,表示输入结束.
【数据输出】每个输入数据输出一行,先输出n,然后输出小于等于n的H数中有几个是H半素数,这两个数用一个空格隔开
【样例输入】
21
85
789
0
【样例输出】
210
855
78962
数列找数
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
635Accepted:
263
【问题描述】
在一个数组A(N)各下标变量中存储N个互不相等的数,键盘输入正整数M(M≤N),要求打印出数组中第M大的下标变量的值。
例如:
数组A(10)的数据为:
A
(1),A
(2),A(3),A(4),A(5),A(6),A(7),A(8),A(9),A(10)
16,57,20,19,38,41,6,13,25,32
M=3时的运行结果为:
A(5)=38(即第3大的数是A(5)=38)
【要求】
【数据输入】第一行为测试的数据的组数k,说明共有K组数据,每一组有两行。
每组中第一行为N,M,第二行为N个下标变量的值。
【数据输出】输出每一组数据中符合要求的下标值和下标变量值。
【样例输入】
2
51
68345
32
123
【样例输出】
A
(2)=8
A
(2)=2
绝对值排序
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
79Accepted:
50
【问题描述】
输入n(n<=100)个整数,按照绝对值从大到小排序后输出。
题目保证对于每一个测试实例,所有的数的绝对值都不相等。
【要求】
【数据输入】输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。
【数据输出】对于每个测试实例,输出排序后的结果,两个数之间用一个空格隔开。
每个测试实例占一行。
【样例输入】
33-42
4012-3
0
【样例输出】
-432
-3210
求逆序对个数
TimeLimit:
1000MSMemoryLimit:
65536K
TotalSubmit:
64Accepted:
28
【问题描述】
有一实数或者字母序列A[1]、A