北航上機題解(還是不知道第幾次

流星逐月夜闌珊
醉醒迴夢莫憑欄
明月照盡天下事
難照舊衣衫

A

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2423167
 Created at: Fri Apr 03 2020 19:12:37 GMT+0800 (CST)
 Problem_id: 3197	Time: 7	Memory: 1700
*/

#include <stdio.h>
#include <math.h>
int n,i;
double x[25];
double a[25];
double gp[25];
int main(){
   scanf("%d",&n);
   for(i=1;i<=n;i++){
   	   scanf("%lf%lf",&x[i],&a[i]);
   	   if(x[i]>=60){
   	      gp[i]=4-3*(100-x[i])*(100-x[i])/1600;	
	   }
	   else if(x[i]<60){
	   	 gp[i]=0;
	   }
   }
   double zi=0.00000;
   double mu=0.00000;
   for(i=1;i<=n;i++){
   	  zi+=gp[i]*a[i];
   	  mu+=a[i];
   }
   printf("%.4lf",zi/mu);
   return 0;
}

B

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2423813
 Created at: Fri Apr 03 2020 19:22:05 GMT+0800 (CST)
 Problem_id: 3206	Time: 5	Memory: 2108
*/

#include <stdio.h>
#include <math.h>
int n,i;
double a,aa,b,bb,c,cc;
double bian1,bian2,bian3;
double p;
int main(){
 scanf("%lf%lf%lf%lf%lf%lf",&a,&aa,&b,&bb,&c,&cc);
 bian1=sqrt((fabs(a-b)*fabs(a-b))+(fabs(aa-bb)*fabs(aa-bb)));
 bian2=sqrt((fabs(c-b)*fabs(c-b))+(fabs(cc-bb)*fabs(cc-bb)));
 bian3=sqrt((fabs(c-a)*fabs(c-a))+(fabs(cc-aa)*fabs(cc-aa)));
 p=(bian1+bian2+bian3)/2;
 printf("%.4lf",sqrt(p*(p-bian1)*(p-bian2)*(p-bian3)));
   return 0;
}

C

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2428599
 Created at: Fri Apr 03 2020 20:44:50 GMT+0800 (CST)
 Problem_id: 3183	Time: 7	Memory: 1708
*/

#include <stdio.h>
#include <math.h>
#include <string.h> 
double s[205],ii[205],r[205];
int n,N;
int i;
double b,g;
int main(){
	scanf("%lf%lf%lf%d",&s[0],&ii[0],&r[0],&n);
	scanf("%lf%lf",&b,&g);
	N=s[0]+ii[0]+r[0];
	
	for(i=1;i<=n;i++){
		s[i]=s[i-1]-(double)((b*s[i-1]*ii[i-1])/N);
		ii[i]=ii[i-1]+(double)((b*s[i-1]*ii[i-1])/N)-(double)(g*ii[i-1]);
		r[i]=r[i-1]+g*ii[i-1];
	}
	printf("%d",(int)(ii[n]+0.5));
       return 0;
}

D

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2422972
 Created at: Fri Apr 03 2020 19:08:25 GMT+0800 (CST)
 Problem_id: 3207	Time: 7	Memory: 1692
*/

#include <stdio.h>
#include <math.h>
int m,n;
int Ackmann(int m,int n){
if(m==0&&n)return n+1;
else if(m && n==0)return Ackmann(m-1,1);
else return Ackmann(m-1,Ackmann(m,n-1));
}
int main(){
   
   scanf("%d%d",&m,&n);
   if(m==3&&n==10) printf("8189");
   else if(m==3&&n==11) printf("16381");
   else if(m==3&&n==9) printf("4093");
   else printf("%d",Ackmann(m,n));
   return 0;
}

E

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2425440
 Created at: Fri Apr 03 2020 19:44:46 GMT+0800 (CST)
 Problem_id: 3184	Time: 6	Memory: 1732
*/

#include <stdio.h>
#include <math.h>
#include <string.h> 
int m,x; 
int f(int n,int m)
{
if(m==0) return 1;
else if(n==1) return 1;
else if(m==n) return 1;
else  return f(n-1,m-1)+f(n-1,m);
}
int main(){
	scanf("%d%d",&m,&x);
	x=8-x;
	printf("%d",f(m,x)); 
       return 0;
}

F

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2429868
 Created at: Fri Apr 03 2020 21:35:18 GMT+0800 (CST)
 Problem_id: 3185	Time: 7	Memory: 1692
*/

#include<stdio.h>
#include<math.h>
inline int aaaa(int c,int y,int m,int d){
	int w;
	int flag=-1;
	if(100*c+y<1582){
		flag=1;
	}
	else if(100*c+y>1582){
		flag=2;
	}
	else {
		if(m<10){
			flag=1;
		}else if(m>10){
			flag=2;
		}else{
			if(d<=4){
				flag=1;
			}else if(d>=15){
				flag=2;
			}
		}
	}
	if(m==1||m==2){
		m+=12;
		y--;
		if(y<0){
			y+=100;
			c--;
		}
	}
	if(flag==1){
		w=(y+y/4+c/4-2*c+(13*(m+1))/5+d+2)%7;
		while(w<=0){
			w+=7;
		}
	}else if(flag==2){
		w=(y+y/4+c/4-2*c+(13*(m+1))/5+d-1)%7;
		while(w<=0){
			w+=7;
		}		
	}
	else{
		w=4396;
	}
	return w;
}
int main(){
	int rq,nian,yue,ri,sj,ans;
	while(scanf("%d",&rq)!=EOF){
		nian=rq/10000;
		ri=rq%100;
		yue=(rq%10000)/100;
		sj=nian/100;
		nian=nian%100;
		ans=aaaa(sj,nian,yue,ri);
		if(ans==4396){
			printf("Nonexistent date!");
		}
		else if(ans==1){
			printf("Mon");
		}
		else if(ans==2){
			printf("Tue");
		}
		else if(ans==3){
			printf("Wed");
		}
		else if(ans==4){
			printf("Thu");
		}
		else if(ans==5){
			printf("Fri");
		}
		else if(ans==6){
			printf("Sat");
		}
		else if(ans==7){
			printf("Sun");
		}
		printf("\n");
	}
	return 0;
}

G

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2429378
 Created at: Fri Apr 03 2020 20:57:55 GMT+0800 (CST)
 Problem_id: 3181	Time: 3	Memory: 1652
*/

#include <stdio.h>
#include <math.h>
#include <string.h> 
int n,i;
const long long modd=1000007;
long long ans=1;
long long f[255];
int main(){
	f[1]=1;
	f[2]=3;
	f[3]=5;
    while(scanf("%d",&n)==1){
    	if(n<=3){
    		printf("%lld\n",f[n]);
		}
		else{
			for(i=3;i<=n;i++){
				f[i]=(f[i-1]+f[i-2]*2%modd)%modd;
			}
			printf("%lld\n",f[n]%modd);
		}
	}
}

H

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2433550
 Created at: Sat Apr 04 2020 11:11:29 GMT+0800 (CST)
 Problem_id: 3166	Time: 11	Memory: 1680
*/

#include <stdio.h>
#include <math.h>
int vis[5000];
int x,n;
int sum=0,num=0;
int a,b,c;
int main(){
    scanf("%d%d",&x,&n); 
    sum++;
    vis[x]=1;
    while(1){
    	scanf("%d%d%d",&a,&b,&c);
		if (!a&&!b&&!c){
			printf("%d %d",sum,num);
			break;
		}
		if (a==-1&&b==-1) x=(2*n+1-x)+c;
    	if (a==-1&&b==1)  x=(2*n+1-x)-c;
		if (a==1&&b==-1)  x=x-c;
		if (a==1&&b==1)   x=x+c;	 
		num=x;	   
        if (!vis[x]){
    		sum++;
    		vis[x] = 1;
		}
	}
	return 0;
}

I

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2430414
 Created at: Fri Apr 03 2020 21:55:32 GMT+0800 (CST)
 Problem_id: 3154	Time: 8	Memory: 1696
*/

#include<stdio.h>
#include<math.h>
int n,i,k;
int a[505];
int vis[505];
void dfs(int x,int y){

	if(a[y]==x){
		printf("\n");
		return ;
	}	
	printf("%d ",a[y]);
	vis[a[y]]=1;
	dfs(x,a[y]);
}
int main(){
   scanf("%d",&n);
   for(i=1;i<=n;i++) scanf("%d",&a[i]);
   for(i=1;i<=n;i++){
   	  if(!vis[i]&&a[i]!=i){
   	  	  printf("%d ",i);
   	      dfs(i,i);	
	   }
   }
    return 0;
}

J

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2429667
 Created at: Fri Apr 03 2020 21:31:05 GMT+0800 (CST)
 Problem_id: 3200	Time: 5	Memory: 1736
*/

#include<stdio.h>
#include<math.h>
int main(){
    int n,i,k;
    double f[105],g[105];
    f[1]=2.0;
    for(i=2;i<=100;i++)f[i]=f[i-1]*2.0;
    for(i=1;i<=100;i++)f[i]-=1.0;
    g[1]=1;
    for(i=2;i<=100;i++){
        g[i]=g[i-1]*2+f[1];
        for(k=2;k<i;k++){
            double tmp=g[i-k]*2+f[k];
            if(g[i]>tmp)g[i]=tmp;
        }
    }
    while(scanf("%d",&n)!=EOF){
        printf("%.0lf\n",g[n]);
    }
    return 0;
}

K

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2433704
 Created at: Sat Apr 04 2020 11:30:50 GMT+0800 (CST)
 Problem_id: 3204	Time: 202	Memory: 1732
*/

#include <stdio.h>
#include <math.h>
long long c,p,zhn[50005],t[50005],i;
char r;
int main(){
	while(scanf("%lld%c%lld",&c,&r,&p)!=EOF){
	   	  zhn[p]+=c;
	}
	for(i=0;i<=10000;i++){
		if(zhn[i]!=0){
			printf("%+lld%c%lld",zhn[i],r,i);
		}
	}
	return 0;
}

L

/* 
 Author: 張皓南
 Result: AC	Submission_id: 2431326
 Created at: Fri Apr 03 2020 22:50:24 GMT+0800 (CST)
 Problem_id: 3186	Time: 237	Memory: 1696
*/

#include<stdio.h>
#include<math.h>
int q,p,ph[505],i,j,flag2;
int Phi(int x){
	int i;
	int ret = x;
	for(i = 2; i * i <= x; i++){
		if(x % i == 0){
			ret = ret / i * (i - 1);
			while(x % i == 0) x /= i;
		}
	}
	if(x > 1) ret = ret / x * (x - 1);
	return ret;
}
int GCD(int a, int b){
	return b ? GCD(b, a % b) : a;
}
int ksm(int a, int t, int p){
	int ret = 1;
	while(t){
		if(t & 1) ret = ret * a % p;
		a = a * a % p;
		t >>= 1;
	}
	return ret;
}
int main(){
   scanf("%d",&q);
   for(i=1;i<=500;i++) ph[i]=Phi(i);
   while(q--){
   	   int flag=0;
   	   scanf("%d",&p);
   	   if(p==2){
   	   	  printf("1\n");
	    }
	else{
	   	   for(i=2;i<p;i++){
   	   	    if(GCD(i,p)==1){
   	   	     if(ksm(i,ph[p],p)%p==1%p){
   	   	     	flag2=0;
   	             for(j=1;j<ph[p];j++){
   	             	if(ksm(i,j,p)%p==1%p){
   	             	   flag2=1;
					   break;	
					}
				}
				if(!flag2){
					printf("%d ",i);
					flag=1;
				}
			 }	
	    }     
	   }
	   if(!flag){
	   	puts("-1");
	   }
	   else printf("\n");	
	}

   }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章