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 }
View Code

 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 }
View Code

 

posted @ 2020-08-07 22:03  bonel  阅读(135)  评论(0)    收藏  举报