干了一下 发现很多还是不会–
今天就看看简单的吧
1. 约数个数
时间限制:1.000s 内存限制:128MB
题目描述
对于一个整数,能整除这个整数的数称为这个数的约数。
例如:1, 2, 3, 6 都是 6 的约数。
请问 78120 有多少个约数。
样例输入
样例输出
思路:没什么讲的 就是除的尽就加
#include<stdio.h>
int main()
{
int temp=0;
for(int i=1;i<=78120;i++)
{
if(78120%i==0)
temp++;
}
printf("%d",temp);
return 0;
}
2.门牌制作
时间限制:1.000s 内存限制:128MB
题目描述
小蓝要为一条街的住户制作门牌号。
这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。
小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字
符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、 0、 1、 7,即需要 1 个
字符 0, 2 个字符 1, 1 个字符 7。
请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?
思路:无非就是判断有没有2
#include<stdio.h>
int main()
{
int i=0;
int c;
for(int s=1;s<=2020;s++)
{
c=s;
while(c!=0)
{
if(c%10==2)
{
i++;
}
c=c/10; //每次取出最后一位
}
}
printf("%d",i);输出
return 0;
}
3.跑步锻炼
小蓝每天都锻炼身体。
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了
激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年
10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米?
判断星期几 递增 判断闰年平年同时看一下有没有是星期一同时也是一号的情况
另外说一句:真tam能跑啊 不累吗
#include <stdio.h>
int main()
{
int sum=0;
int mon=6; //开始那天是星期六
int y[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};//13是方便看月份
for(int i=2000; i<=2020; i++)
{
if(i% 4 == 0 && i% 100 != 0 || i% 400 == 0)//是闰年二月就是29天
{
y[2]=29;
}
else
{
y[2]=28;否则就是28
}
for(int month=1; month<=12; month++)//循环月份
{
for(int t=1; t<=y[month]; t++)//月份的天数
{
sum++;
if(mon==8)//就是星期一
{
mon=1;
}
if(mon==1||t==1)
{
sum++;//满足所选情况
}
mon++;
if(i==2020&&month==10&&t==1)//到达指定日期
{
printf("%d",sum);
}
}
}
}
return 0;
}
4.蛇形填数
时间限制:1.000s 内存限制:128MB
题目描述
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 :::
3 5 8 14 :::
4 9 13 :::
10 12 :::
11 :::
:::
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列
的数是多少 ?
思路:傻逼逼的找了很久很久规律 才发现问题
1 2 6 7 15 16 28 29 45 46
3 5 8 14 17 27 30 44 47
4 9 13 18 26 31 43 48
10 12 19 25 32 42 49
11 20 24 33 41 50
1 5 13 25 41 依次递增4 8 12 16
得到公式:a=c(递增的数)+(a-1);
#include<stdio.h>
int main()
{
int a=1,b,c=0;
for(b=1;b<=19;b++)
{
c+=4;
a+=c;
}
printf("%d",a);
return 0;
}
5.成绩统计
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
如果得分至少是 60 分,则称为及格。如果得分至少为 85 分,则称为优秀。
请计算及格率和优秀率,用百分数表示,百分号前的部分四舍五入保留整数。
输入格式
输入的第一行包含一个整数 n,表示考试人数。
接下来 n 行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出格式
输出两行,每行一个百分数,分别表示及格率和优秀率。百分号前的部分四舍五入保留整数。
样例输入
7
80
92
56
74
88
100
0
样例输出
71%
43%
麻烦点无非就是%的输出 百度了一下 原来是两个%才会生效一个
#include<stdio.h>
int main()
{
int a;
int b[100]={0};
scanf("%d",&a);
int y=0;//优秀
int j=0;//
for(int i=0;i<a;i++)
{
scanf("%d",&b[i]);
if(b[i]>=85)y++;//判断
if(b[i]>=60)j++;
}
double h=y,k=a,i=j,e=100;//转型
i=i/k*100;
k=h/k*100;
printf("%.0f%%",i);//转
printf("\n");
printf("%.0f%%",k);
printf("%");
//printf("%.0f\n%.0f%",i,k);
return 0;
}
6.单词分析
小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。
现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这个字母出现的次数。
输入格式
输入一行包含一个单词,单词只由小写英文字母组成。
输出格式
输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪个。如果有多个字母出现的次数相等,输出字典序最小的那个。
第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。
样例输入
lanqiao
样例输出
a
2
思路:主要是ascall为数组存储下标存数据,
然后判断哪一个存储的多,因为是从小到大开始所以,
在存储相同的情况下,字典序小的优先。
#include<stdio.h>
#include<string.h>
int main()
{
char s[1000],u;
gets(s);
int a[1000]={0},i,t=0;
int c;
c=strlen(s);
for(i=0;i<c;i++)
{
a[s[i]]++;//转换
//
//a[i]=s[i]-48;
}
for(i=1;i<200;i++)
{
if(a[i]>t)//判断条件,如果改成>=,则两个或多个字母数量相同,输出字典序最大的。
{
u=i;
t=a[i];
}
}
printf("%c\n%d",u,t);
return 0;
}
不想写了 累。就这样 没懂 问 其他需要动动脑子。