7-1 整数格式
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
给定一个字符串,请分析该字符串格式,检查它是否符合10进制整数的表示格式。
特别提醒:
1、字符串如果有前导0,如0123,则该字符串不符合整数格式;
2、+0,-0是不符合整数格式的,但+1和-1都是符合的;
3、科学记数法是不符合的。
输入格式:
第一行为一个整数t(0<t<=10),代表测试用例组数。后边t行字符串(每个字符串长度都不超过30,且不包含空格和制表符tab),每行代表一个待检测字符串。
输出格式:
共t行,依次对应输入的测试用例,如果符合则输出yes,否则输出no。
输入样例:
8
1
-1
200
999
-999
0123
+0
-0
输出样例:
yes
yes
yes
yes
yes
no
no
no
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
#include<string.h>
int check(char*s){
if(s[0]=='+'&&s[1]=='0'){
return 0;
}
if(s[0]=='-'&&s[1]=='0'){
return 0;
}
if(s[0]=='0'&&s[1]!='\0'){
return 0;
}
if(s[0]=='+'&&s[1]=='\0'){
return 0;
}
if(s[0]=='-'&&s[1]=='\0'){
return 0;
}
int len = strlen(s);
int i=0;
if(s[0]=='+'||s[0]=='-'){
i++;
}
for(;i<len;i++)
{
if(s[i]<'0'||s[i]>'9')
{
return 0;
}
}
return 1;
}
int main()
{
int t=0;
scanf("%d",&t);
char s[31];
for(int i=0;i<t;i++){
scanf("%s",s);
if(check(s)){
printf("yes\n");
}else{
printf("no\n");
}
}
return 0;
}
7-21 实验3_4_质数统计
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
现有若干行正整数,请你写一段程序分别统计每一行中有多少个质数。
输入格式:
第一行为一个整数n(0<n<=10),代表测试用例行数。后边是n行,每行为若干个用空格分隔的正整数。这些正整数的最后是-1,表示此行结束。
输出格式:
为n行,每行一个整数,对应于输入的每一行中质数的个数。
测试用例保证输入合法,且所有整数可以用int存储
输入样例:
2
37 54 18 92 39 45 8 84 75 15 33 83 85 54 81 33 89 -1
17 19 60 77 2 92 38 63 92 69 91 94 11 -1
输出样例:
3
4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
#include<math.h>
int main()
{
int m,n;
scanf("%d",&m);
int i,j,k=0,x=0;
for(i=0;i<m;i++)
{
scanf("%d",&n);
while(n!=-1)
{
for(j=2;j<=sqrt(n);j++)
{
if(n%j==0)
{
k++;
}
}
if(k==0)
{
x++;
}
k=0;
scanf("%d",&n);
}
printf("%d\n",x);
x=0;
}
return 0;
}
7-26 实验3_9_符合要求的数字
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知一个整数n,打印1到n所有除以m后所得商正好是它的各个数字平方和的数。
输入格式:
为两个用空格分隔的整数,它们依次代表n、m(1<m,n<=10000)。
输出格式:
按从小到大的顺序依次输出所有满足条件的整数,每个数占一行。测试用例保证有满足条件的数。
输入样例:
1000 11
输出样例:
131
241
324
550
624
803
900
910
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int i;
int a,b;
int sum=0;
for(i=1;i<=n;i++)
{
a=i/m;
b=i;
sum=0;
while(b>0)
{
sum=sum+(b%10)*(b%10);
b=b/10;
}
if(sum==a)
{
printf("%d\n",i);
}
}
return 0;
}
7-28 实验3_11_鸡兔同笼吗?
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
鸡有一个头两条腿,兔子有一个头4条腿,蜻蜓有一个头6条腿。没有例外。一个笼子里共有m个头,n条腿,问鸡、兔和蜻蜓各有多少?
输入格式:
只有一行,为两个正整数m和n,分别代表头的个数和腿的个数数。
输出格式:
有若干行,每一行为一组解,格式均为用空格分隔的三个整数,依次代表鸡的个数、解兔子的个数和蜻蜓的个数。多组解的输出顺序按解鸡的个数小到大排序。
测试数据保证可以用int存储。
输入样例:
15 40
输出样例:
在这里给出相应的输出。例如:
10 5 0
11 3 1
12 1 2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int x,y,z;
int m,n;
scanf("%d %d",&m,&n);
for(x=0;x<=m;x++)
{
for(y=0;y<=m;y++)
{
for(z=0;z<=m;z++)
{
if((x+y+z)==m&&(2*x+4*y+6*z)==n)
{
printf("%d %d %d\n",x,y,z);
}
}
}
}
return 0;
}
7-29 实验3_12_上机考试
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
计算导论与程序设计某次上机考试共出了4道题,其中每名同学都至少做对了一道题。根据已知条件求做对了2、3、4题的可能的人数。。
输入格式:
只有一行,为两个用空格分隔的正整数m和n,分别代表参加考试的总人数和总的解题数。
输出格式:
有若干行,每一行为一组解,格式均为用空格分隔的三个整数,依次代表解2题的人数,解3题的人数和解4题的人数。多组解的输出顺序按解2题人数由小到大排序,如果解2题的人数相同则按解3题的人数由小到大排序。所有测试数据保证可以用int存储。
输入样例:
15 20
输出样例:
0 1 1
1 2 0
2 0 1
3 1 0
5 0 0
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int m,n;
int x,y,z;
scanf("%d %d",&m,&n);
if(m==0)
{
printf("0 0 0");
}
else
{
int k=n-m;
for(x=0;x<=k;x++)
{
for(y=0;y<=k/2;y++)
{
for(z=0;z<=k/3;z++)
{
if((x+2*y+3*z)==k&&(x+y+z)<=m)
{
printf("%d %d %d\n",x,y,z);
}
}
}
}
}
return 0;
}
7-31 实验4_1_韩信点兵
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
韩信有一队兵,他想知道一共有多少人,便让士兵排队报数。站5人一排,多出1人;站6人一排,多出5人站;7人一排,多出6人;站11人一排,多出10人。问韩信至少有多少兵?
输入格式:
为一个整数n(0<n<10000)。
输出格式:
一个不小于n的整数,为韩信可能拥有兵的数量的最小值。
输入样例:
200
输出样例:
461
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int i;
for(i=n;i<10000;i++)
{
if(i%5==1)
{
if(i%6==5){
if(i%7==6){
if(i%11==10){
break;
}
}
}
}
}
printf("%d",i);
return 0;
}
7-6 求符合给定条件的整数集
分数 15
全屏浏览
切换布局
作者 徐镜春
单位 浙江大学
给定不超过6的正整数A,考虑从A开始的连续4个数字。请输出所有由它们组成的无重复数字的3位数。
输入格式:
输入在一行中给出A。
输出格式:
输出满足条件的的3位数,要求从小到大,每行6个整数。整数间以空格分隔,但行末不能有多余空格。
输入样例:
2
输出样例:
234 235 243 245 253 254
324 325 342 345 352 354
423 425 432 435 452 453
523 524 532 534 542 543
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int a;
int k=0;
int n,m,i;
scanf("%d", &a);
for (i = a; i <= a + 3; i++)
{
for (m = a; m <= a + 3; m++)
{
if (m != i)
{
for (n = a; n <= a + 3; n++)
{
if (n != m && n != i)
{
k=k+1;
if(k%6==0)
{
printf("%d%d%d", i,m,n);
}
else
printf("%d%d%d ", i,m,n);
}
}
}
}
printf("\n");
}
return 0;
}
7-7 支票面额
分数 15
全屏浏览
切换布局
作者 杨起帆
单位 浙大城市学院
一个采购员去银行兑换一张y元f分的支票,结果出纳员错给了f元y分。采购员用去了n分之后才发觉有错,于是清点了余额尚有2y元2f分,问该支票面额是多少?
输入格式:
输入在一行中给出小于100的正整数n。
输出格式:
在一行中按格式y.f
输出该支票的原始面额。如果无解,则输出No Solution
。
输入样例1:
23
输出样例1:
25.51
输入样例2:
22
输出样例2:
No Solution
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
int main(void) {
int f, y, n;
int flag = 0;
scanf("%d", &n);
for(y = 0; y < 100; ++y) {
for(f = 0; f < 100; ++f) {
if(n + 2 * f + 200 * y == y + 100 * f) {
printf("%d.%d\n", y, f);
flag = 1;
}
}
}
if(!flag)
printf("No Solution\n");
return 0;
}
7-8 求特殊方程的正整数解
分数 15
全屏浏览
切换布局
作者 张彤彧
单位 浙江大学
本题要求对任意给定的正整数N,求方程X2+Y2=N的全部正整数解。
输入格式:
输入在一行中给出正整数N(≤10000)。
输出格式:
输出方程X2+Y2=N的全部正整数解,其中X≤Y。每组解占1行,两数字间以1空格分隔,按X的递增顺序输出。如果没有解,则输出No Solution
。
输入样例1:
884
输出样例1:
10 28
20 22
输入样例2:
11
输出样例2:
No Solution
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
int main()
{
int N = 0;
scanf("%d", &N);
int flag = 1;
for (int i = 1; i < 100; i++)
{
for (int j = i + 1; j < 100; j++)
{
if (i * i + j * j == N)
{
flag = 0;
printf("%d %d\n", i, j);
}
}
}
if(flag)
{
printf("No Solution");
}
return 0;
}
7-9 组合数的和
分数 15
全屏浏览
切换布局
作者 陈越
单位 浙江大学
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。
输入格式:
输入在一行中先给出 N(1 < N < 10),随后一行给出 N 个不同的非 0 个位数字。数字间以空格分隔。
输出格式:
输出所有可能组合出来的2位数字的和。
输入样例:
3
2 8 5
输出样例:
330
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
int main()
{
int n,a[10],i,j,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
sum=sum+a[i]+a[j]*10;
sum=sum+a[i]*10+a[j];
}
}
printf("%d",sum);
return 0;
}