Codeforces Round #660 (Div. 2)
A. Captain Flint and Crew Recruitment
题意:定义了一种数(接近质数),这种数可以写成p*q并且p和q都是素数,问n是否可以写成四个不同的数的和,并且保证至少三个数是接近质数
思路:接近质数是固定的几个,因为保证至少三个是接近质数,那么只要保证三个数是固定的几个数,并且是最后一个剩下的数不和他们相同,那就可以直接输出,相等的特殊情况就可以改变接近质数(特殊情况写出来就可以)
代码:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstring> 5 #include<cmath> 6 using namespace std; 7 int main(){ 8 int t; 9 scanf("%d",&t); 10 while(t--){ 11 int n=0; 12 scanf("%d",&n); 13 if(n<31){ 14 printf("NO\n"); 15 }else if(n==36){ 16 printf("YES\n"); 17 printf("5 6 10 15\n"); 18 19 }else if(n==40){ 20 printf("YES\n"); 21 printf("6 10 21 3\n"); 22 }else if(n==44){ 23 printf("YES\n"); 24 printf("6 10 21 7\n"); 25 }else{ 26 printf("YES\n"); 27 printf("6 10 14 %d\n",n-30); 28 } 29 } 30 }
B. Captain Flint and a Long Voyage
题意:有一个n位的正整数x,去掉x用k代题,例如x=729,k-111101001(7=111,2=10,9=1001),擦除k的n位变成数字r,使r最大,给定长度n,输出x
思路:最后一位是8,其余的都是9,直接输出就行
代码:
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 #include<cstring> 5 #include<cmath> 6 using namespace std; 7 int main(){ 8 int t; 9 scanf("%d",&t); 10 while(t--){ 11 int n; 12 scanf("%d",&n); 13 int m=n/4; 14 int j=0; 15 if(n%4==0){ 16 j=n-m; 17 for(int i=0;i<j;i++){ 18 printf("9"); 19 } 20 for(int i=0;i<m;i++){ 21 printf("8"); 22 } 23 printf("\n"); 24 }else{ 25 m+=1; 26 j=n-m; 27 for(int i=0;i<j;i++){ 28 printf("9"); 29 } 30 for(int i=0;i<m;i++){ 31 printf("8"); 32 } 33 printf("\n"); 34 } 35 } 36 }

浙公网安备 33010602011771号