1.找最小值
题目描述
给出n和n个整数ai,求这n个整数中最小值是什么。
输入格式
第一行输入一个正整数n,表示数字个数。
第二行输入n个非负整数,表示a1,a2…an,以空格隔开。
输出格式
输出一个非负整数,表示这n个非负整数中的最小值。
#include <stdio.h>
int main(){
unsigned int n,a,min;
scanf("%u",&n);
scanf("%u",&a);
min=a;
for(unsigned int i=1;i<n;i++){
scanf("%u",&a);
if(a<min){
min=a;
}
}
printf("%u",min);
return 0;
}
输入 #1
8
1 9 2 6 0 8 1 7
输出 #1
0
2.分类平均
题目描述
给定n和k,将从1到n之间的所有正整数可以分为两类:A类数可以被k整除(也就是说是k的倍数),而B类数不能。请输出这两类数的平均数,精确到小数点后1位,用空格隔开。
数据保证两类数的个数都不会是0。
输入格式
输入两个正整数n与k。
输出格式
输出一行,两个实数,分别表示A类数与B类数的平均数。精确到小数点后一位。
#include <stdio.h>
int main(){
unsigned int n,k,sum1=0,sum2=0,count1=0,count2=0;
scanf("%u %u",&n,&k);
for(unsigned int i=1;i<=n;i++){
if(i%k==0){
sum1+=i;
count1++;
}else{
sum2+=i;
count2++;
}
}
printf("%.1f %.1f",1.0*sum1/count1,1.0*sum2/count2);
return 0;
}
输入 #1
100 16
输出 #1
56.0 50.1
3.一尺之棰
题目描述
《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为a的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除2,向下取整)。第几天的时候木棍的长度会变为1?
输入格式
输入一个正整数a,表示木棍长度。
输出格式
输出一个正整数,表示要第几天的时候木棍长度会变为1。
#include <stdio.h>
#include <math.h>
int main(){
unsigned int a,day=1;
scanf("%u",&a);
while(a!=1){
a/=2;
day++;
}
printf("%u\n",day);
return 0;
}
输入 #1
100
输出 #1
7
4.数字直角三角形
题目描述
给出n,请输出一个直角边长度是n的数字直角三角形。所有数字都是2位组成的,如果没有2位则加上前导0。
输入格式
输入一个正整数n。
输出格式
输出如题目要求的数字直角三角形。
#include <stdio.h>
int main(){
unsigned int n,count=0;
scanf("%u",&n);
for(unsigned int i=1;i<=n;i++){
for(unsigned int j=n-i+1;j>=1;j--){
if(count<9)
printf("0%u",++count);
else
printf("%u",++count);
}
printf("\n");
}
return 0;
}
输入 #1
5
输出 #1
0102030405
06070809
101112
1314
15
5.阶乘之和
题目描述
用高精度计算出S=1!+2!+3!+⋯+n!(n≤50)。
其中!表示阶乘,定义为n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=120。
输入格式
一个正整数n。
输出格式
一个正整数S,表示计算结果。
#include<stdio.h>
int main()
{
int i,A[1005]={
0},B[1005]={
0},n,j;
scanf("%d", &n);
A[0]=B[0]=1;
for (i=2;i<=n;i++){
for (j=0;j<100;j++)
B[j]*=i;
for (j=0;j<100;j++)
if (B[j]>9){
B[j+1] += B[j]/10;
B[j]%=10;
}
for (j=0;j<100;j++){
A[j]+=B[j];
if (A[j]>9) {
A[j+1] += A[j]/10;
A[j]%=10;
}
}
}
for (i=100;i>=0&&A[i]==0;i--);
for (j=i;j>=0;j--) printf("%d", A[j]);
return 0;
}
输入 #1
3
输出 #1
9
6.计数问题
题目描述
试计算在区间1到n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如,在1到11中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字1出现了4次。
输入格式
2个整数n,x,之间用一个空格隔开。
输出格式
1个整数,表示x出现的次数。
#include <stdio.h>
int main(){
int n,x,count=0;
scanf("%d %d",&n,&x);
for(int i=1;i<=n;i++){
int j=i,t;
while(j>0){
t=j;
t%=10;
if(t==x)count++;
j/=10;
}
}
printf("%d\n",count);
return 0;
}
输入 #1
11 1
输出 #1
4
7.级数求和
题目描述
已知:Sn=1+1/2+1/3+…+1/n。显然对于任意一个整数k,当n足够大的时候,Sn>k。
现给出一个整数k,要求计算出一个最小的n,使得Sn>k。
输入格式
一个正整数k。
输出格式
一个正整数n。
#include <stdio.h>
int main(){
unsigned int k,n=1;
double S=0;
scanf("%u",&k);
while(S<=k){
S+=(1.0/n);
n++;
}
printf("%u",n-1);
return 0;
}
输入 #1
1
输出 #1
2
8.金币
题目描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续n天每天收到n枚金币后,骑士会在之后的连续n+1 天里,每天收到n+1枚金币。
请计算在前k天里,骑士一共获得了多少金币。
输入格式
一个正整数k,表示发放金币的天数。
输出格式
一个正整数,即骑士收到的金币数。
#include <stdio.h>
int main(){
unsigned int k,S=0,day=0;
scanf("%u",&k);
//1,2,2,3,3,3,4,4,4,4,5,5,5,5,5
//1,2,3,4,5,6,7,8,9,10,11
for(int i=1;day<k;i++){
for( int j=1;j<=i;j++){
S+=i;
day++;
if(day==k) break;
}
}
printf("%d\n",S);
return 0;
}
输入 #1
6
输出 #1
14
输入 #2
1000
输出 #2
29820
9.数列求和
题目描述
计算1+2+3+…+(n-1)+n 的值,其中正整数 n 不大于 100。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。
输入格式
输入一个正整数 n。
输出格式
输出一个正整数,表示最后求和的答案。
#include <stdio.h>
int main(){
int n,sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
sum+=i;
}
printf("%d",sum);
return 0;
}
样例输入 #1
100
样例输出 #1
5050
提示
数据保证,1 <= n <=100。
10.质数口袋
题目描述
小 A 有一个质数口袋,里面可以装各个质数。他从2开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。
口袋的负载量就是口袋里的所有数字之和。
但是口袋的承重量有限,装的质数的和不能超过 L。给出 L,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数的个数,数字之间用换行隔开。
输入格式
一行一个正整数 L。
输出格式
将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。
#include <stdio.h>
int main(){
int isprime(int n);
int L,sum=0,count=0;
scanf("%d",&L);
for(int i=