E5-2019级航类第5次正式上机

一子落阵定杀伐
拨乱满盘局中沙
阳春雪纷繁落入谁人家
曲高和者寡

A
思路:签到题,白给

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2506410
 Created at: Fri Apr 17 2020 20:08:07 GMT+0800 (China Standard Time)
 Problem_id: 3261	Time: 4	Memory: 1608
*/

#include <stdio.h>
int n,x,y,k,cha;
int main(){
	while(scanf("%d%d%d%d",&n,&x,&y,&k)==4){
		cha=k+n-x;
		cha=cha%7;
		cha+=y;
		cha=cha%7;
		//printf("%d\n",cha);
		if(cha==4)puts("Thursday");
		else if(cha==3)puts("Wednesday");
		else if(cha==2)puts("Tuesday"); 
		else if(cha==5)puts("Friday");
		else if(cha==1)puts("Monday");
		else if(cha==0)puts("Sunday");
	    else if(cha==6)puts("Saturday");
	}
	return 0;
}

B
思路:排序板子题,这都不会退学吧

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2504095
 Created at: Fri Apr 17 2020 19:26:23 GMT+0800 (China Standard Time)
 Problem_id: 3255	Time: 6	Memory: 1676
*/

#include <stdio.h>
int n,a,j,tmp,i;
int zhn[1005];
int main(){
	n=0;
	while(scanf("%d",&a)==1){
		n++;
		zhn[n]=a;
	}
	for(i=1;i<=n;i++){
		for(j=i+1;j<=n;j++){
			if(zhn[i]>zhn[j]){
				tmp=zhn[i];
				zhn[i]=zhn[j];
				zhn[j]=tmp;
			}
		}
	}
	for(i=1;i<=n;i++){
		printf("%d ",zhn[i]);
	}
	return 0;
}

C
思路:模拟,白给

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2503316
 Created at: Fri Apr 17 2020 19:14:39 GMT+0800 (China Standard Time)
 Problem_id: 3267	Time: 4	Memory: 1732
*/

#include <stdio.h>
int n,m,i,j;
int zhn[105][10]; //第i个傻子第j次考试分数 
int fen[105];//每次考试的分数 
int lgr[10];//lgr这么狠,一定代表优秀人数 
int main(){
	scanf("%d%d",&m,&n); 
	for(i=1;i<=m;i++){
		for(j=1;j<=n;j++){
			scanf("%d",&zhn[i][j]);
			fen[j]+=zhn[i][j];
		}
	}
	for(i=1;i<=n;i++)printf("%.2lf ",(double)(fen[i])/m);
	printf("\n");
	for(i=1;i<=m;i++){
		for(j=1;j<=n;j++){
			if(zhn[i][j]>=80){
				lgr[j]++;
			} 
		}
	}
	for(i=1;i<=n;i++) printf("%.2lf%% ",(double)(lgr[i])/m*100.0);
	printf("\n");
	double cs=0;
	for(i=1;i<=m;i++){
		cs=0.000;
		for(j=1;j<=n;j++){
			cs+=(double)(zhn[i][j])*1.00;
		}
		printf("%.2lf\n",cs/n);
	}
	return 0;
}

D
思路:字符串什么的最墨迹了呜呜呜,阔以学习提下这个isspace函数的用法,好像是在ctype.h这个库里面(库里牛逼)这个东西是用来判断是不是空字符的,非常好用的说嘿嘿,好多这种函数,你们阔以自己探索。

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2509790
 Created at: Fri Apr 17 2020 21:41:22 GMT+0800 (China Standard Time)
 Problem_id: 3253	Time: 14	Memory: 1668
*/

#include <stdio.h>
#include <string.h>
#include <ctype.h>
char zhn[100005];
char lgr[100005];
int ans,i;
int main(){
	   ans=0;
       while(gets(zhn)!=NULL){
	    	int len=strlen(zhn);
	    	for(i=len-1;isspace(zhn[i]);i--)  zhn[i+1]='\0';
			len=i+1; 
		    if(len>=ans){
		    	ans=len;
		    	for(i=0;i<len;i++) lgr[i]=zhn[i];
			}
       }
       printf("%d ",ans);
       for(i=0;i<=ans-1;i++) printf("%c",lgr[i]); 
       printf("#END");
	return 0;
}

E
思路:这题也挺白给的(白给你还错两次,傻子实锤了)
俺为什么会错呢,我没给0设置初值呜呜呜。注意初值设定么么哒
(好像当年我就打过100万的表被人揍了呜呜呜

* 
 Author: 张皓南
 Result: AC	Submission_id: 2511160
 Created at: Fri Apr 17 2020 23:02:18 GMT+0800 (China Standard Time)
 Problem_id: 3106	Time: 125	Memory: 17300
*/

#include <stdio.h>
int modd=1000003,i,q,n;
long long jc[1000055];
long long zhn[1000055];
int main(){
	jc[1]=1;
	jc[0]=0;
	zhn[0]=1;
	zhn[1]=2;
	for(i=2;i<=1000000;i++) {
		jc[i]=(jc[i-1]%modd*i%modd)%modd;
		zhn[i]=(zhn[i-1]%modd+jc[i]%modd)%modd;
	}
		
	scanf("%d",&q);
	while(q--){
		scanf("%d",&n);
		printf("%lld\n",zhn[n]);
	}
	return 0;
}

F
思路:这题白给,照着模拟就行

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2508597
 Created at: Fri Apr 17 2020 20:49:24 GMT+0800 (China Standard Time)
 Problem_id: 3256	Time: 552	Memory: 9316
*/

#include <stdio.h>
#include<string.h>
int h,w,m,i,j,x,y;
int jv1[1005][1005];
int jv2[15][15];
int jv3[1005][1005];
int main(){
	scanf("%d%d%d",&h,&w,&m);
	for(i=1;i<=h;i++){
		for(j=1;j<=w;j++){
			scanf("%d",&jv1[i][j]);
		}
	}
	for(i=1;i<=m;i++){
		for(j=1;j<=m;j++){
			scanf("%d",&jv2[i][j]);
		}
	}
	for(x=1;x<=h-m+1;x++){
		for(y=1;y<=w-m+1;y++){
			  for(i=1;i<=m;i++){
				for(j=1;j<=m;j++){
					jv3[x][y]+=jv1[x+i-1][y+j-1]*jv2[i][j];
					
				}
			}
		}
	}
	for(x=1;x<=h-m+1;x++){
		for(y=1;y<=w-m+1;y++){
			printf("%d ",jv3[x][y]);
		}
		printf("\n");
	}
	return 0;
}

G
思路:爱地魔力转圈圈~~(模拟

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2508123
 Created at: Fri Apr 17 2020 20:40:26 GMT+0800 (China Standard Time)
 Problem_id: 3195	Time: 10	Memory: 1772
*/

#include <stdio.h>
#include<string.h>
char a[105][105],laji;
int n,i,j;
int xx,yy,x,y,s;
int vis[105][105];
char zhn[105][105];
int main(){
	scanf("%d",&n);
	for(i=1;i<=n;i++)scanf("%s",a[i]); 
	for(i=1;i<=n;i++){
		for(j=0;j<n;j++){
		    zhn[i][j+1]=a[i][j]; 
		} 
		
	}
	i=1,j=1;
	while(s!=n*n){
		while(j<=n&&vis[i][j]==0){
		if(zhn[i][j]>='a'&&zhn[i][j]<='z') printf("%c",zhn[i][j]); 
        vis[i][j]=1;
        s++;j++;   
       }
	   j--;i++;
           
       while(i<=n&&vis[i][j]==0){
        if(zhn[i][j]>='a'&&zhn[i][j]<='z') printf("%c",zhn[i][j]);
         vis[i][j]=1;
         s++;
		 i++;              
       }
	   i--;j--;
           
       while(j>0&&vis[i][j]==0){
        if(zhn[i][j]>='a'&&zhn[i][j]<='z') printf("%c",zhn[i][j]);
         vis[i][j]=1;
         s++;j--; 
       }
	   j++;i--;
           
       while(i>0&&vis[i][j]==0){
        if(zhn[i][j]>='a'&&zhn[i][j]<='z')printf("%c",zhn[i][j]);
         vis[i][j]=1;
         s++;i--;           
       }
	   i++;j++;
	}
	printf("\n");
	for(i=1;i<=n;i++) 
	for(j=1;j<=n;j++) 
	vis[i][j]=0;
	s=0;
	i=1,j=1;
		while(s!=n*n){       
		
		while(i<=n&&vis[i][j]==0){
        if(zhn[i][j]>='A'&&zhn[i][j]<='Z') printf("%c",zhn[i][j]);
         vis[i][j]=1;
         s++;
		 i++;              
       }
	   i--;j++;
		
		while(j<=n&&vis[i][j]==0){
		if(zhn[i][j]>='A'&&zhn[i][j]<='Z') printf("%c",zhn[i][j]); 
        vis[i][j]=1;
        s++;j++;   
       }
	   j--;i--;
           
       while(i>0&&vis[i][j]==0){
        if(zhn[i][j]>='A'&&zhn[i][j]<='Z')printf("%c",zhn[i][j]);
         vis[i][j]=1;
         s++;i--;           
       }
	   i++;j--;
           
       while(j>0&&vis[i][j]==0){
        if(zhn[i][j]>='A'&&zhn[i][j]<='Z') printf("%c",zhn[i][j]);
         vis[i][j]=1;
         s++;j--; 
       }
	   j++;i++;
	}
	return 0;
}

H
思路:设定两个变量作为头标记和尾标记(尾标记好像没用的说
然后碰到字母就往前扫,碰到不是字母的就从当前位置输出到头标记
(尾标记确实没用QWQ)

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2510291
 Created at: Fri Apr 17 2020 22:04:25 GMT+0800 (China Standard Time)
 Problem_id: 3264	Time: 43	Memory: 1816
*/

#include <stdio.h>
#include <string.h>
#include <ctype.h>
char zhn[120005];
int n;
int ans,i,j,tou,wei,k;
int main(){
	scanf("%d",&n);
	while (getchar() != '\n');
	for(i=1;i<=n;i++){
		memset(zhn,0,sizeof(zhn));
		gets(zhn);
		int len=strlen(zhn);
		tou=wei=-1;
		printf("Case #%d: ",i);
		for(j=0;j<len;j++){
			if((zhn[j]>='A'&&zhn[j]<='Z')||(zhn[j]>='a'&&zhn[j]<='z')){
				if(tou==wei) {
					tou=j;
					if((zhn[j+1]>='A'&&zhn[j+1]<='Z')||(zhn[j+1]>='a'&&zhn[j+1]<='z')) continue;
					else{
							if(zhn[j]=='a'||zhn[j]=='e'||zhn[j]=='i'||zhn[j]=='o'||zhn[j]=='u')printf("%c",(char)(zhn[j]-32));
							else if(zhn[j]=='A'||zhn[j]=='E'||zhn[j]=='I'||zhn[j]=='O'||zhn[j]=='U') printf("%c",zhn[j]);
						    else if(zhn[j]>='A'&&zhn[j]<='Z')printf("%c",(char)(zhn[j]+32));
						    else printf("%c",zhn[j]);
						    tou=wei=j;
					}
					
				}
				else{
					if((zhn[j+1]>='A'&&zhn[j+1]<='Z')||(zhn[j+1]>='a'&&zhn[j+1]<='z')) continue;
					else{
						
						for(k=j;k>=tou;k--){
							if(zhn[k]=='a'||zhn[k]=='e'||zhn[k]=='i'||zhn[k]=='o'||zhn[k]=='u')printf("%c",(char)(zhn[k]-32));
							else if(zhn[k]=='A'||zhn[k]=='E'||zhn[k]=='I'||zhn[k]=='O'||zhn[k]=='U') printf("%c",zhn[k]);
						    else if(zhn[k]>='A'&&zhn[k]<='Z')printf("%c",(char)(zhn[k]+32));
						    else printf("%c",zhn[k]);
						}
						tou=wei=j;
					}
				}
			}
			else printf("%c",zhn[j]);
		}
		printf("\n");
	}
	return 0;
}

I
思路:KMP算法,优秀的字符串匹配算法
为啥出这么多字符串啊
吃饱了撑的叭

感兴趣可以学学,我不给讲谢谢,CSDN上都有

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2513614
 Created at: Sat Apr 18 2020 11:16:23 GMT+0800 (China Standard Time)
 Problem_id: 3257	Time: 4	Memory: 1604
*/

#include <stdio.h>
#include <string.h>
char s[1055];
char b[1055];
char zhn[1005];
int nex[1005];
int lenb,i,p,flag,lens,lenzhn,j;
int ti[1005];
void kmp(){
	memset(nex,0,sizeof(nex));
	nex[0]=0;
	for(i=1,p=0;i<lenb;i++){
		while(p>0&&b[i]!=b[p]) p=nex[p-1];
		if(b[i]==b[p]) p++;
		nex[i]=p;
	}
	return ;
}
int main(){
	gets(s);
	gets(b);
	gets(zhn);
	lenb=strlen(b);
	
	
	lens=strlen(s);
	
	lenzhn=strlen(zhn);
	
	while(s[lens-1]==' '||s[lens-1]=='\n'||s[lens-1]=='\t'||s[lens-1]=='\r') lens--; 
	while(b[lenb-1]==' '||b[lenb-1]=='\n'||b[lenb-1]=='\t'||b[lenb-1]=='\r') lenb--; 
	while(zhn[lenzhn-1]==' '||zhn[lenzhn-1]=='\n'||zhn[lenzhn-1]=='\t'||zhn[lenzhn-1]=='\r') lenzhn--; 
	lens--;
	lenb--;
	lenzhn--;
	kmp();
	memset(ti,0,sizeof(ti));
	for(i=0,p=0;i<lens;i++){
		while(p>0&&s[i]!=b[p]) p=nex[p-1];
		if(b[p]==s[i]) p++;
		if(p==lenb){
			flag=1;
			ti[i-lenb+1]=1;
		}
	}
	if(!flag) printf("No Replacement!");
	else{
	for(i=0;i<lens;i++){
		if(ti[i]){
		
		   for(j=0;j<lenzhn;j++) printf("%c",zhn[j]);
		   i+=lenb-1;
		}
		else printf("%c",s[i]); 
	}
	printf(";");		
	}

	return 0;
}

J
思路:这个题还蛮有意思的哈(为什么做水题会有这么大快感哈哈哈哈草)
m是数值大,n是个数多
于是两个明显用不同算法
m的用一个小递推,先把m那行排序,f[i]代表到i这个位置,有f[i]个连续的相同数,随便推一波就可
n<1e3 桶排序,白给的

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2511435
 Created at: Fri Apr 17 2020 23:24:04 GMT+0800 (China Standard Time)
 Problem_id: 3254	Time: 198	Memory: 1736
*/

#include <stdio.h>
#include <string.h>
int n,m,res,num,i,x,num2,res2,tmp,j;
int zhn[1005],lgr[1005];
int f[1005];
int main(){
	while(scanf("%d%d",&m,&n)==2){
		
		res=0,num=0;
		for(i=1;i<=m;i++) scanf("%d",&zhn[i]),f[i]=1;
		for(i=1;i<=m;i++){
			for(j=i+1;j<=m;j++){
				if(zhn[i]>zhn[j]){
					tmp=zhn[i];
					zhn[i]=zhn[j];
					zhn[j]=tmp;
				}
			}
		}
		
		for(i=2;i<=m;i++) if(zhn[i]==zhn[i-1]) f[i]=f[i-1]+1;
		for(i=1;i<=m;i++){
			if(f[i]>=num){
				res=zhn[i];
				num=f[i];
			}
		}
		
		num2=0;res2=0;
		memset(lgr,0,sizeof(lgr));	
		for(i=1;i<=n;i++){
			scanf("%d",&x);
			lgr[x]++;
		}
		for(i=1;i<=1000;i++){
			if(lgr[i]>=num2){
				num2=lgr[i];
				res2=i;
			}
		}
		printf("%d %d\n",res,res2);
	} 
	return 0;
}

K
水题好

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2506028
 Created at: Fri Apr 17 2020 20:00:52 GMT+0800 (China Standard Time)
 Problem_id: 3139	Time: 4	Memory: 1684
*/

#include <stdio.h>
long long jv1[15][15];
long long jv2[15][15];
long long jv3[15][15];
int a1,b1,a2,b2,a3,b3,i,j,k,l;
long long tmp[15][15];
long long zhn[15][15];
int main(){
	scanf("%d%d%d%d%d%d",&a1,&b1,&a2,&b2,&a3,&b3);
	for(i=1;i<=a1;i++){
		for(j=1;j<=b1;j++){
			scanf("%lld",&jv1[i][j]);
		}
	}
	for(i=1;i<=a2;i++){
		for(j=1;j<=b2;j++){
			scanf("%lld",&jv2[i][j]);
		}
	}
	for(i=1;i<=a3;i++){
		for(j=1;j<=b3;j++){
			scanf("%lld",&jv3[i][j]);
		}
	}
	for(i=1;i<=a1;i++){
		for(j=1;j<=b2;j++){
			for(k=1;k<=b1;k++){
				tmp[i][j]+=jv1[i][k]*jv2[k][j];
			}
		}
	}
	for(i=1;i<=a1;i++){
		for(j=1;j<=b3;j++){
			for(k=1;k<=b2;k++){
				zhn[i][j]+=tmp[i][k]*jv3[k][j];
			}
		}
	}
	for(i=1;i<=a1;i++){
		for(j=1;j<=b3;j++){
			printf("%lld ",zhn[i][j]);
		}
		printf("\n");
	}
	return 0;
}

L
思路:高精度模板,不过用三进制实现,都一样,模拟即可
里面有几个神奇的函数,想知道自己查,我要吃饭了

/* 
 Author: 张皓南
 Result: AC	Submission_id: 2514072
 Created at: Sat Apr 18 2020 12:03:34 GMT+0800 (China Standard Time)
 Problem_id: 3268	Time: 274	Memory: 1932
*/

#include <stdio.h>
#include <string.h>
char a[10005],b[10005],a1[10005],b1[10005],n[10005];
int s1[20005],s2[10005],c[20005],x,y,l1,l2,i;
int main(){
	while(scanf("%s%s",a,b)!=EOF){
       x=0,y=0;
       memset(c,0,sizeof(c));
       memset(s1,0,sizeof(s1));
       memset(s2,0,sizeof(s2));
       memset(n,0,sizeof(n));
       memset(a1,0,sizeof(a1));
       memset(b1,0,sizeof(b1));
	   l1=strlen(a);
       l2=strlen(b);
       
       
	   if(a[0]!='-'&&b[0]!='-'){//两个正数相加 
       	  for(i=0;i<l1;i++) s1[l1-i]=a[i]-'0';
       	  for(i=0;i<l2;i++) s2[l2-i]=b[i]-'0';
       	  while(x<=l1||x<=l2){
       	  	x++;
       	  	c[x]=y+s1[x]+s2[x];
       	  	y=c[x]/3;c[x]=c[x]%3;
		  }
		  while(c[x]==0&&x>1) x--;
		  for(i=x;i>=1;i--) printf("%d",c[i]);
		  printf("\n");
	   }
	   
	   else if(a[0]=='-'&&b[0]=='-'){//两个负数相加 
	   	   printf("-");
		   for(i=0;i<l1-1;i++) s1[l1-1-i]=a[i+1]-'0';
		   for(i=0;i<l2-1;i++) s2[l2-1-i]=b[i+1]-'0';
		   while(x<=l1-1||x<=l2-1){
       	  	x++;
       	  	c[x]=y+s1[x]+s2[x];
       	  	y=c[x]/3;c[x]=c[x]%3;
		  }
		  while(c[x]==0&&x>1) x--;
		  for(i=x;i>=1;i--) printf("%d",c[i]);
		  printf("\n");
	   }
	   
	   else if(a[0]=='-'){//第二个减第一个 
	   	  for(i=0;i<l1-1;i++) a1[i]=a[i+1];
		  l1--;
		  if(l2<l1||(l1==l2&&strcmp(b,a1)<0)){
		  	strcpy(n,b);
            strcpy(b,a1);
            strcpy(a1,n);
            printf("-");
		  }
		  l1=strlen(a1);
		  l2=strlen(b);
		  for(i=0;i<l1;i++) s1[l1-i]=a1[i]-'0';
		  for(i=0;i<l2;i++) s2[l2-i]=b[i]-'0';
		  while(x<=l1||x<=l2){
		  	x++;
		    if(s2[x]<s1[x]){
		    	s2[x]+=3;
		    	s2[x+1]--; 
			}
			c[x]=s2[x]-s1[x];	
		  }
		  while(c[x]==0&&x>1) x--;
		  for(i=x;i>=1;i--) printf("%d",c[i]);
		  printf("\n");
	   }
	   
	   else if(b[0]=='-'){//第一个减第二个 
	   	for(i=0;i<l2-1;i++) b1[i]=b[i+1];
		  l2--;
		  if(l2>l1||(l1==l2&&strcmp(b1,a)>0)){
		  	strcpy(n,b1);
            strcpy(b1,a);
            strcpy(a,n);
            printf("-");
		  }
		  l1=strlen(a);
		  l2=strlen(b1);
		  for(i=0;i<l1;i++) s1[l1-i]=a[i]-'0';
		  for(i=0;i<l2;i++) s2[l2-i]=b1[i]-'0';
		  while(x<=l1||x<=l2){
		  	x++;
		    if(s1[x]<s2[x]){
		    	s1[x]+=3;
		    	s1[x+1]--; 
			}
			c[x]=s1[x]-s2[x];	
		  }
		  while(c[x]==0&&x>1) x--;
		  for(i=x;i>=1;i--) printf("%d",c[i]);
		  printf("\n");
	   	
	   }
	   
	} 
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值