每日三百行代码 第五天

做了17,18两年的PTA天梯赛的一级题
还没做完。。。。。

  1. L1-1 寻找250 (10 分)
  2. L1-2 日期格式化 (5 分)
  3. L1-3 阅览室 (20 分) (未做)
  4. L1-4 稳赢 (15 分)
  5. L1-5 宇宙无敌大招呼 (5 分)
  6. L1-6 整除光棍 (20 分)
  7. L1-7 装睡 (10 分)
  8. L1-8 矩阵A乘以B (15 分)
  9. L1-1 天梯赛座位分配 (20 分) (未做)
  10. L1-2 倒数第N个字符串 (15 分)
  11. L1-3 打折 (5 分)
  12. L1-4 2018我们要赢 (5 分)
  13. L1-5 电子汪 (10 分)
  14. L1-6 福到了 (15 分)
  15. L1-7 谁是赢家 (10 分)
  16. L1-8 猜数字 (20 分)

//L1-1 寻找250 (10 分)
#include<stdio.h>
int main(){
   
	int a;
	int cnt=0;
    for(int i=0;;i++){
   
		scanf("%d",&a);
		cnt++;
		if(a==250){
   
			break;
		}
	}
	printf("%d",cnt);
	return 0;
}


//L1-2 日期格式化 (5 分)
#include<stdio.h>
int main(){
   
	int a,b,c;
	scanf("%d-%d-%d",&a,&b,&c);
	printf("%04d-%02d-%02d\n",c,a,b);
	return 0;
}

//暂时不会做
//map还没开始学

//L1-4 稳赢 (15 分)
#include <stdio.h>
#include <string.h>
int main(){
   
    int k = 0;
    char s[20];
    int cnt = 0;
    scanf("%d", &k);
    k++;
    while(scanf("%s", s)){
   
        if(strcmp(s, "End") == 0) break;
        cnt++;
        if(k == cnt){
   
        	printf("%s\n",s);
            cnt = 0;
        } else if(strcmp(s, "ChuiZi") == 0){
   
            printf("Bu\n");
        } else if(strcmp(s, "JianDao") == 0){
   
            printf("ChuiZi\n");
        } else if(strcmp(s, "Bu") == 0){
   
            printf("JianDao\n");
        }   
    }
    return 0;
}

//L1-5 宇宙无敌大招呼 (5 分)
#include<stdio.h>
int main(){
   
    char s[8];
    gets(s);
    printf("Hello %s",s);
    return 0;
}


//L1-6 整除光棍 (20 分)
#include<stdio.h>
int ans[1000];
typedef long long ll;
int main(){
   
	int x;
	scanf("%d",&x);
	ll res=1;
	int sum=1;
	while(res%x!=0){
   
		sum++;
		res=(res*10+1)%x;
	}
	int p=0;res=1;
	for(int i=0;i<sum;i++){
   
		if(res<x){
   
			ans[p++]=0;
		}else{
   
			ans[p++]=res/x;
			res%=x;
		}
		res=res*10+1;
	}
	int t=0;
	while(ans[t]==0){
   
		t++;
	}
	for(int i=t;i<p;i++){
   
		printf("%d",ans[i]);
	}
	printf(" %d\n",sum);
	return 0;
}

//L1-7 装睡 (10 分)
#include<stdio.h>
int main(){
   
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
   
    	char name[4];
    	scanf("%s",name);
    	int h,m;
    	scanf("%d %d",&h,&m);
    	if(h>20||h<15||m>70||m<50){
   
    		printf("%s\n",name);
		}
	}
    return 0;
}

#include<stdio.h>

int a[100][100];
int b[100][100];

int main(){
   
	int ra,rb,ca,cb;
	scanf("%d %d",&ra,&cb);
	for(int i=0;i<ra;i++){
   
		for(int j=0;j<ca;j++){
   
			scanf("%d",&a[i][j]);
		}
	}
	for(int i=0;i<rb;i++){
   
		for(int j=0;j<cb;j++){
   
			scanf("%d",&b[i][j]);
		}
	} 
	if(ca!=rb){
   
		printf("Error: %d != %d\n",ca,rb);
	}else{
   
		int m=0;
		printf("%d %d\n",ra,cb);
		for(int k1=0;k1<ra;k1++){
   
			for(int k2=0;k2<cb;k2++){
   
				m=0;
				for(int i=0;i<ca;i++){
   
					m += a[k1][i]*b[i][k2];
				}
				if(k2==cb-1){
   
					printf("%d\n",m);
				}else{
   
					printf("%d ",m);
				}
			}
		}
	}
	return 0;
} 
#include<stdio.h>
int main(){
   
	int ra,ca,rb,cb;
	//给 A 数组赋值 
	scanf("%d%d",&ra,&ca);
	int a[ra][ca];
	for(int i=0;i<ra;i++){
   
		for(int j=0;j<ca;j++){
   
			scanf("%d",&a[i][j]);
		}
	}
	// 给B数组赋值 
	scanf("%d%d",&rb,&cb);
	int b[rb][cb];
	for(int i=0;i<rb;i++){
   
		for(int j=0;j<cb;j++){
   
			scanf("%d",&b[i][j]);
		}
	}
	//判断是否满足输出求乘积条件
	if(ca!=rb){
   
		printf("Error: %d != %d",ca,rb);
		return 0;
	}
	int c[ra][cb];
	for(int i=0;i<ra;i++){
   
		int sum=0;
		for(int j=0;j<cb;j++){
   
			int sum=0;
			for(int k=0;k<ca;k++){
   
				sum+=(a[i][k]*b[k][j]);
			}
			c[i][j]=sum;
		} 
	}
	
	//打印输出 
	printf("%d %d\n",ra,cb);
	for(int i=0;i<ra;i++){
   
		for(int j=0;j<cb;j++){
   
			printf("%d",c[i][j]);
			if(j!=cb-1){
   
				printf(" ");
			} 
		}
		if(i!=ra-1){
   
		  printf("\n");
		}	
	}
	return 0;
}

//还是不会

//L1-2 倒数第N个字符串 (15 分)
#include <stdio.h>
#include <math.h>
int i,j;
char ch[10000005];
int main()
{
   

	int n,m;
	scanf("%d %d",&n,&m);

	int M=pow(26,n)-m;
    while(n--){
   
        ch[i++]='a'+M%26;
        M/=26;
    }
    for(int j=i-1;j>=0;j--)
        printf("%c",ch[j]);

	return 0;
}

// L1-3 打折 (5 分)
#include<stdio.h>
int main()
{
   
	int m,n;
	double q;
	scanf("%d %d",&m,&n);
	q=m*n*0.1;
	printf("%.2lf",q);
	return 0;
	
}

//L1-4 2018我们要赢 (5 分)
#include<stdio.h>
int main()
{
   
	printf("2018\n");
	printf("wo3 men2 yao4 ying2 !\n");
	return 0;
	
}

//L1-5 电子汪 (10 分)
#include<stdio.h>
int main()
{
   
	char m[]="Wang!";
	int a,b,n;
	scanf("%d %d",&a,&b);
	n=a+b;
	while(n--){
   
		printf("%s",m);
	}
	return 0;
}


//L1-6 福到了 (15 分)

#include<stdio.h> 
 
int n;
char ch,str[105][105];
 
int strcmp2(char *s1,char *s2){
   
    for(int i=0,j=n-1;i<n/2&&j>n/2;i++,j--){
   
        if(s1[i]!=s2[j])
            return 1;
    }
    return 0;
}
 
int main(){
   
    scanf("%c%d",&ch,&n);
    getchar();
    for(int i=0;i<n;i++){
   
        for(int j=0;j<n;j++)
            scanf("%c",&str[i][j]);
            getchar();
    }
    int t=n/2;
    int k;
    for(k=0;k<t;k++){
   
        if(strcmp2(str[k],str[n-k-1]))
            break;
    }
    if(k==t)
        printf("bu yong dao le\n");
    for(int i=n-1;i>=0;i--){
   
        for(int j=n-1;j>=0;j--){
   
            if(str[i][j]=='@')
                printf("%c",ch);
            else
                printf(" ");
        }
        printf("\n");
    }
    return 0;
}

//L1-7 谁是赢家 (10 分)
#include"stdio.h"
int main()
{
   
  int a,b,p1,p2;
  int x,y,z;
  scanf("%d%d",&a,&b);
  scanf("%d%d%d",&x,&y,&z);
  p2=x+y+z;
  if(p2==3)
  printf("The winner is b: %d + %d",b,p2);
  else if(p2==0)
  printf("The winner is a: %d + %d",a,3-p2);
  else if(a>b)
  printf("The winner is a: %d + %d",a,3-p2);
  else
  printf("The winner is b: %d + %d",b,p2);
  return 0;
}


//L1-8 猜数字 (20 分)
#include<stdio.h>
#include<math.h>
struct pepole{
   
//用结构体表示输入的数据 
//因为输入的数据结构相同,都是一个字符串和一个数字 
    int num;
    int name[10];
}p[10005],pmin;//pmin表示最小值 

int main (){
   
    int i,n,sum=0;
    double half;//half表示平均数的一半
 
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
   
        scanf("%s %d",p[i].name,&p[i].num);
        sum=sum+p[i].num;
    }
    half=sum*1.0/n*0.5;
    pmin=p[0];
    for(i=0;i<n;i++)
    {
   
        if(fabs(pmin.num-half)>fabs(p[i].num-half))//最接***均数的一半 
            pmin=p[i];
    }
    printf("%.0f %s",half,pmin.name);
 
    return 0;
}