刷题也是一种成就感(Hi~洛谷)

写在前面

学习C语言怎么能不写代码呢~

不是说好了洛谷是入门吗(怎么这么难

题解

B2002 Hello,World!

原题链接

输出“Hello,World!”

不能再简单了~

1
2
3
4
5
6
7
8
#include <stdio.h>
#include <stdlib.h>

int main() {
printf("Hello,World!");
return 0;
}

B2005 字符三角形

原题链接

打印等腰三角形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <stdlib.h>

int main() {
int l=0;
char z;
scanf("%c",&z);
while(l<3){
int k=1;
while(k<=2-l){
printf(" ");
k++;
}
int x=1;
while(x<=2*l+1){
printf("%c",z);
x++;
}
printf("\n");
l++;
}
return 0;
}

B2025 输出字符菱形

原题链接

打印字符菱形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>
#include <stdlib.h>

int main() {
int l=0;
while(l<3){
int k=1;
while(k<=2-l){
printf(" ");
k++;
}
int x=1;
while(x<=2*l+1){
printf("*");
x++;
}printf("\n");
l++;
}
l=1;
while(l<=2){
int a=1;
while(a<=l){
printf(" ");
a++;
}
int b=1;
while(b<=5-2*l){
printf("*");
b++;
}
printf("\n");
l++;
}

return 0;
}

B2029 大象喝水

原题链接

简单计算题。注意C语言中的除法。

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#define pi 3.14
int main(){
int r,h,x;
scanf("%d %d",&h,&r);
double v=r*pi*r*h;
x=20000/v+1;
printf("%d",x);
return 0;
}

P1001 A+B Problem

原题链接

A+B

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>

int main() {
int a,b,s;
scanf("%d %d",&a,&b);
s=a+b;
printf("%d",s);
return 0;
}

P1035 [NOIP2002 普及组] 级数求和

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main (){
int k,i=0;
double s=0;
scanf ("%d",&k);
while (s<k){
i++;
s+=1/(double)i;
}
if (k==1) i=2;
printf ("%d",i);
return 0;
}

P1046 [NOIP2005 普及组] 陶陶摘苹果

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
int main(){
int a[10],tth;
for (int i=0;i<10;i++){
scanf ("%d",&a[i]);
}
scanf("%d",&tth);
int h=tth+30;
int cnt=0;
for(int k=0;k<10;k++){
if (h>=a[k])
cnt++;
}
printf ("%d",cnt);
return 0;
}

P1085 [NOIP2004 普及组] 不高兴的津津

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
int main (){
int sh,mh,h=0,d=0,s=0;
for(int i=1;i<8;++i){
scanf ("%d%d",&sh,&mh);
h=sh+mh;
if (h>8){
if (d==0) {
d=i,s=h;
}
else{
if(h>s){
d=i,s=h;}
}
}
}
if (d==0){
printf ("0");
}else printf ("%d",d);
return 0;
}

P1089 [NOIP2004 提高组] 津津的储蓄计划

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
int main (){
int a[13],u=0,s=0,q=0;//u余额,s存钱,q本月预算
for (int i=1;i<13;i++){
scanf ("%d",&a[i]);
}
int x=0;
for (int i=1;i<13;i++){
q=300+u;
if (q-a[i]>=0){
u=q-a[i];
if (u/100>0){
s+=u/100*100;
u%=100;
}
}
else {
printf ("-%d",i);
x=1;
break;
}
}
if (x==0) printf ("%d",s*12/10+u);

return 0;
}

P1307 [NOIP2011 普及组] 数字反转

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
int main (){
int n;
scanf ("%d",&n);
int a;//输出
if (n<0) {
printf ("-");//先输出负号
n=-n;}
else if (n==0) printf ("0");
int c=0;
while (n>0){
a=n%10;

if (a!=0) {
printf ("%d",a);
c=1;//a不为0就令c=1
}
else if (c==1) printf ("%d",a);//a为0 看看之前有没有输出
n/=10;
}
return 0;
}

P1420 最长连号

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
int main (){
int n,max=1;
scanf ("%d\n",&n);
int a[n],c[n];
scanf ("%d",&a[0]);
c[0]=1;
for (int i=1;i<n;i++){
c[i]=1;
scanf ("%d",&a[i]);
if (a[i]==a[i-1]+1){
c[i]=c[i-1]+1;
}
if (c[i]>max) max=c[i];
}
printf ("%d",max);
return 0;
}

P1421 小玉买文具

原题链接

1
2
3
4
5
6
7
#include <stdio.h>
int main(){
int a,b;
scanf("%d%d",&a,&b);
printf("%d",(a*10+b)/19);
return 0;
}

P1422 小玉家的电费

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main(){
int n;
double m,a[3]={0.4463,0.4663,0.5663};
scanf ("%d",&n);
if (n<150) {
m=a[0]*n;
}
else if (n>151&n<400){
m=150*a[0]+(n-150)*a[1];
}
else m=150*a[0]+(400-150)*a[1]+(n-400)*a[2];
printf ("%.1lf",m);
return 0;
}

P1423 小玉在游泳

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
const double k=0.98;
int main (){
double s,l=2,x=2;
scanf ("%lf",&s);
if (s==0) printf ("0");
else if (s<=2) printf ("1");
else{
int c=1;
while (l<s){
c++;
x*=k;
l+=x;
}
printf ("%d",c);
}
return 0;
}

P1424 小鱼的航程(改进版)

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main (){
int x,n;
scanf ("%d %d",&x,&n);
//第一周 5-x,
int fn;
if(x>5) fn=0;
else fn=5-x+1;

int sn=n-(8-x);
int w=sn/7,sw=sn%7;
//s是有几周 sw=剩的天数
if (sw>5) sw=5;
int s=(fn+w*5+sw)*250;
printf ("%d",s);
return 0;
}

P1425 小鱼的游泳时间

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <math.h>
#include <stdio.h>
int main(){
int a,b,c,d,e=0,f=0;
scanf ("%d %d %d %d",&a,&b,&c,&d);
if(d>=b){
e=c-a,f=d-b;
}
else{
e=c-a-1,f=60-b+d;
}
printf("%d %d",e,f);
return 0;
}

P1888 三角函数

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
int main (){
int a[3];
scanf ("%d %d %d",&a[0],&a[1],&a[2]);
int minx=a[0],maxx=a[0];
for (int i=0;i<3;i++){
if (a[i]<minx)
minx=a[i];
if (a[i]>maxx)
maxx=a[i];
}
int x=minx,y=maxx;
while (y%x!=0){
int u=y%x;
y=x,x=u;
}
printf ("%d/%d",minx/x,maxx/x);

return 0;
}

P1909 [NOIP2016 普及组] 买铅笔

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
int main (){
int n,s[3],j[3],m[3],c[3];
scanf ("%d",&n);
for (int i=0;i<3;i++){
scanf ("%d%d",&s[i],&j[i]);
}

for (int i=0;i<3;i++){
if (n%s[i]==0){
c[i]=n/s[i];
}else c[i]=n/s[i]+1;
m[i]=j[i]*c[i];
}
int min=m[0];
for (int i=1;i<3;i++){
if (m[i]<min)
min=m[i];
}
printf ("%d",min);
return 0;
}

P1980 [NOIP2013 普及组] 计数问题

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
int main (){
int n,x;
scanf ("%d %d",&n,&x);
// if (n<x) printf ("0");
//else{
int c=0;
for (int i=1;i<=n;i++){
int t=i;
while (t>0){
int u=t%10;
if (u==x) c++;
t/=10;
}
}
//if (x!=0) c++;
printf ("%d",c);
//}

return 0;
}

P3954 [NOIP2017 普及组] 成绩

原题链接

1
2
3
4
5
6
7
#include <stdio.h>
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
printf("%d",(int)(0.2*a+0.3*b+0.5*c));
return 0;
}

P2669 [NOIP2015 普及组] 金币

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main (){
int k,s=0,i=1,u=0;//s 金币数; i周期;j 天数;u 剩余天数
scanf ("%d",&k);
while (i*(i+1)/2<k){
s+=i*i;
// printf ("i:%d s:%d\n",i,s);
i++;
}
u=k-i*(i-1)/2;
if(u>0) s+=u*i;
printf ("%d",s);
return 0;
}

P4414 [COCI2006-2007#2] ABC

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
int main(){
int a[3];
scanf ("%d %d %d",&a[0],&a[1],&a[2]);
char b[3];
scanf ("\n%c%c%c",&b[0],&b[1],&b[2]);

for(int k=0;k<3;k++){
for(int i=0;i<2;i++){
if (a[i]>a[i+1]){
int x=a[i];
a[i]=a[i+1];
a[i+1]=x;
}
}
}
for (int j=0;j<3;j++){
if (b[j]=='A'){
printf ("%d ",a[0]);
} else if(b[j]=='B') {
printf ("%d ",a[1]);
}
else if(b[j]=='C'){
printf ("%d ",a[2]);
}
}
return 0;
}

P5703 【深基2.例5】苹果采购

原题链接

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>

int main() {
int a,b,s;
scanf("%d %d",&a,&b);
s=a*b;
printf("%d",s);
return 0;
}

P5704 【深基2.例6】字母转换

原题链接

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
#include <stdlib.h>

int main() {
char a,s;
scanf("%c",&a);
s='A'-'a'+a;
printf("%c",s);
return 0;
}

P5705 【深基2.例7】数字反转

原题链接

1
2
3
4
5
6
7
8
#include <stdio.h>
int main(){
int a,b;
scanf("%d.%d",&a,&b);
int c=a/100,d=a%100/10,e=a%100%10;
printf("%d.%d",b,e*100+d*10+c);
return 0;
}

P5708 【深基2.习2】三角形面积

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {
double a,b,c;
double s;
scanf("%lf %lf %lf",&a,&b,&c);
double p=(a+b+c)/2;
s= sqrt(p*(p-a)*(p-b)*(p-c));
// s=(int)(s*10+0.5)/10.0;
printf("%.1lf",s);
return 0;
}

P5709 【深基2.习6】Apples Prologue / 苹果和虫子

原题链接

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main (){
int m,t,s;
scanf ("%d %d %d",&m,&t,&s);
if(m*t>s)
if (s%t==0)
printf("%d",m-s/t);
else printf("%d",m-s/t-1);
else printf("0");
return 0;
}

P5710 【深基3.例2】数的性质

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include  <stdio.h>
int main(){
int x;
scanf("%d",&x);
if (x%2==0&&(x>4&&x<=12))
printf("1");
else printf("0");
printf(" ");

if (x%2==0||(x>4&&x<=12))
printf("1");
else printf("0");
printf(" ");

if ((x%2==0&&!(x>4&&x<=12))||(x%2!=0&&(x>4&&x<=12)))
printf("1");
else printf("0");
printf(" ");

if(x%2!=0&&!(x>4&&x<=12))
printf("1");
else printf("0");

return 0;
}

P5711 【深基3.例3】闰年判断

原题链接

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
int a;
scanf("%d",&a);
if (a%400==0||(a%4==0&&a%100!=0))
printf("1");
else printf("0");

return 0;
}

P5712 【深基3.例4】Apples

原题链接

1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main(){
int x;
scanf ("%d",&x);
if (x==1) printf("Today, I ate 1 apple.");
if (x==0) printf("Today, I ate 0 apple.");
if (x>1) printf("Today, I ate %d apples.",x);
return 0;
}

P5713 【深基3.例5】洛谷团队系统

原题链接

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
int n,st,lt;
scanf("%d",&n);
st=5*n,lt=10+3*n;
if(st<lt)
printf("Local");
else printf("Luogu");
return 0;
}

P5715 【深基3.例8】三位数排序

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
int main (){
int a,b,c;
scanf ("%d %d %d",&a,&b,&c);
for (int k=0;k<3;++k){
if (a>b) {
int x=a;
a=b,b=x;
}
if (b>c){
int x=c;
c=b,b=x;
}
}
printf ("%d %d %d",a,b,c);
return 0;
}

P5716 【深基3.例9】月份天数

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
int main (){
int y,m;
scanf ("%d %d",&y,&m);
if (m==2){
if((y%4==0&&y%100!=0)||y%400==0)
printf ("29");
else printf ("28");
}else if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
printf ("31");
else printf ("30");

return 0;
}

P5718 【深基4.例2】找最小值

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int main( ){
int n,a,c=0x3f3f3f3f;
scanf ("%d",&n);
for (int i=0;i<n;++i){
scanf ("%d",&a);
if (a<c){
c=a;
}
}
printf ("%d",c);
return 0;
}

P5719 【深基4.例3】分类平均

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include  <stdio.h>
int main (){
int n,k;

double c1=0,c2=0,s1=0,s2=0;
scanf ("%d %d",&n,&k);
for (int i=1;i<=n;++i){
if (i%k==0){
c1++;
s1+=i;
}
else{
c2++;
s2+=i;
}
}

printf ("%.1f %.1f",s1/c1,s2/c2);
return 0;
}

P5721 【深基4.例6】数字直角三角形

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main (){
int n;
scanf ("%d",&n);
int c=1;
for (int l=1;l<=n;l++){
for (int i=0;i<=n-l;i++){
if (c<10) printf ("0%d",c);
else printf ("%d",c);
c++;
}
printf ("\n");
}
return 0;
}

P5722 【深基4.例11】数列求和

原题链接

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main(){
int n,s=0;
scanf ("%d",&n);
for (int i=1;i<=n;++i){
s+=i;
}
printf ("%d",s);
return 0;
}

P5724 【深基4.习5】求极差 / 最大跨度值

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
const int inf=0x3f3f3f3f;
int main (){
int n;
scanf ("%d",&n);
int a[n+1],max=-inf,min=inf;
for (int i=1;i<=n;i++){
scanf ("%d",&a[i]);
if (a[i]<min) min=a[i];
if (a[i]>max) max=a[i];
}
printf ("%d",max-min);
return 0;
}

P5725 【深基4.习8】求三角形

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
int main (){
int n,c=1;
scanf ("%d",&n);

for (int l=1;l<=n;l++){
for (int i=0;i<n;i++){
if (c<10) printf ("0%d",c);
else printf ("%d",c);
c++;
}
printf ("\n");
}
printf ("\n");
c=1;
for (int l=1;l<=n;l++){
for (int i=0;i<n-l;i++){
printf (" ");
}
for (int i=0;i<l;i++){
if (c<10) printf ("0%d",c);
else printf ("%d",c);
c++;
}
printf ("\n");
}
return 0;
}

P1055 [NOIP2008 普及组] ISBN 号码

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
int main (){
char a[10];
char z;
// scanf ("%d-",&a[1]);
// for (int i=2;i<5;i++){
// scanf ("%d",&a[i]);
// }
// scanf ("-");
// for (int i=5;i<10;i++){
// scanf ("%d",&a[i]);
// }
// scanf ("-%c",&z);
scanf ("%c-%c%c%c-%c%c%c%c%c-%c",&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9],&z);

int l,s=0;
for (int i=1;i<10;i++){
l=(a[i] - '0')*i;
// printf("a[%d]:%c\n", i, a[i]);
s+=l;
}

// printf("s:%d\n", s);
s %= 11;
if (s==10&&z=='X'){
printf ("Right");
}
else if (s==(z-'0')){
printf ("Right");
}
else if (s==10&&z!='X'){
printf ("%c-%c%c%c-%c%c%c%c%c-X",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
}
else if (s!=10&&s!=(z-'0')){
printf ("%c-%c%c%c-%c%c%c%c%c-%d",a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],s);
// printf("\n%d",s);
}
return 0;
}

P5707 【深基2.例12】上学迟到

原题链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
int main(){
int s,v,h=0;
scanf("%d %d",&s,&v);
int t=s/v+10;
int a,b;
if (s%v!=0){t++;}
if (t<=480)
h=480-t;
else
h=60*24-(t-480);
a=h/60,b=h%60;

if(a<10) printf("0%d:",a);
else printf("%d:",a);
if(b<10) printf("0%d",b);
else printf("%d",b);
return 0;
}

刷题也是一种成就感(Hi~洛谷)
https://liaoweiquan.github.io/2019/06/30/洛谷刷题/
作者
泉泉
发布于
2019年6月30日
许可协议