Codeforces Global Round 7 比赛人数10630
[codeforces 1326A] Bad Ugly Numbers 构造由2,3,4组成的不能被3整除的奇数
总目录详见https://blog.youkuaiyun.com/mrcrack/article/details/103564004
也在线测评地址https://codeforces.ml/contest/1326/problem/A
Problem | Lang | Verdict | Time | Memory |
---|---|---|---|---|
A - Bad Ugly Numbers | GNU C++11 | Accepted | 31 ms | 0 KB |
看完题目,第一直觉,质数肯定满足题意,妈呀,第一题,就要用到质数线性筛,题目,再定睛再看数据范畴,1≤n≤10^5,
质数线性筛仅能做到n=7的情况,即处理到10000000.
再重新读题,有些熟悉的想法,涌了上上,
除了个位数,其他位的数,全用2,
个位数,用奇数,1,3,5,7,9跳了出来,1,5不符合题意,因构造出来的数,都能整除1,5
7,9不可控,因构造出来的数,什么时候能整除7,9不知道。
3可控,能整除3的数,只要,各个位上的数字和,能整除3即可
若构造出的数能被3整除,只需将其中的一个2换成4.
构造过程如下
n=1
输出-1
n=2
23
(2+3)%3==2 23不能被3整除
输出23
n=3
223
(2+2+3)%3=1 223不能被3整除
输出223
n=4
2223
(2+2+2+3)%3=0 2223能被3整除
继续构造
2243
(2+2+4+3)%3=2 2243不能被3整除
输出2243
AC代码如下
#include <stdio.h>
int main(){
int t,n,i,sum;
scanf("%d",&t);
while(t--){
scanf("%d",&n),sum=0;
if(n==1)printf("-1\n");
else{
for(i=1;i<=n-2;i++)printf("2"),sum+=2;
if((sum+2+3)%3==0)printf("4");
else printf("2");
printf("3");
printf("\n");
}
}
return 0;
}