CF1916D Mathematical Problem 题解
CF1916D Mathematical Problem
题意:
给定奇数 nnn,求出 nnn 个正整数满足都是长度为 nnn 的完全平方数,且组成这 nnn 个数的数字相同如(169,961)。
思路:
神秘题目。看看你的观察力!
注意奇数这个重要性质。
发现 n=3n=3n=3 时候是 169,196,961169,196,961169,196,961。n=5n=5n=5的时候我们可以把以上每个数后面加两个0,或者相邻数字之间加0。
n=5:16900,19600,96100,10609,90601n=5:16900,19600,96100,10609,90601n=5:16900,19600,96100,10609,90601
n=7:1690000,1960000,9610000,1060900,9060100,1006009,9006001n=7:1690000,1960000,9610000,1060900,9060100,1006009,9006001n=7:1690000,1960000,9610000,1060900,9060100,1006009,9006001
依次可以得到n=9,n=11n=9,n=11n=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