CF1916D Mathematical Problem
题意:
给定奇数 n n n,求出 n n n 个正整数满足都是长度为 n n n 的完全平方数,且组成这 n n n 个数的数字相同如(169,961)。
思路:
神秘题目。看看你的观察力!
注意奇数这个重要性质。
发现
n
=
3
n=3
n=3 时候是
169
,
196
,
961
169,196,961
169,196,961。
n
=
5
n=5
n=5的时候我们可以把以上每个数后面加两个0,或者相邻数字之间加0。
n
=
5
:
16900
,
19600
,
96100
,
10609
,
90601
n=5:16900,19600,96100,10609,90601
n=5:16900,19600,96100,10609,90601
n
=
7
:
1690000
,
1960000
,
9610000
,
1060900
,
9060100
,
1006009
,
9006001
n=7:1690000,1960000,9610000,1060900,9060100,1006009,9006001
n=7:1690000,1960000,9610000,1060900,9060100,1006009,9006001
依次可以得到
n
=
9
,
n
=
11
n=9,n=11
n=9,n=11到所有答案……
code:
#include<bits/stdc++.h>
using namespace std;
int T,n;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
if(n==1){
printf("1\n");
continue;
}
if(n==3){
printf("169\n196\n961\n");
continue;
}
printf("169");
for(int i=1;i<=n-3;i++) printf("0");
printf("\n");
printf("196");
for(int i=1;i<=n-3;i++) printf("0");
printf("\n");
printf("961");
for(int i=1;i<=n-3;i++) printf("0");
printf("\n");
for(int i=1;i<n/2;i++){
printf("1");
for(int j=1;j<=i;j++) printf("0");
printf("6");
for(int j=1;j<=i;j++) printf("0");
printf("9");
for(int j=2*i+3;j<n;j++) printf("0");
printf("\n");
printf("9");
for(int j=1;j<=i;j++) printf("0");
printf("6");
for(int j=1;j<=i;j++) printf("0");
printf("1");
for(int j=2*i+3;j<n;j++) printf("0");
printf("\n");
}
}
return 0;
}
//5:10609

604

被折叠的 条评论
为什么被折叠?



