【问题描述】
小 N 最近在沉迷数学问题。
对于一个数字串 S,如果可以将它划分成两个数字 A、B,满足:
那么小 N 就认为该划分是一个“好划分”。如对于数字串“11297”,(11,297)就是一个“好划分”。
如果一个数字串 S 至少有两个“好划分”,那么小 N 就认为 S 是一个“魔法串”。如数字串“1335702375”就是一个“魔法串”,其“好划分”有(1,335702375)和(133,5702375)。
现在给定正整数 N,小 N 需要你帮她求出一个长度恰好为 N 的“魔法串”S,如果无解请输出“QwQ”(不带引号)。
【输入】
一行一个正整数 N。
【输出】
一行一个长度恰好为 N 的“魔法串”S,如果无解请输出“QwQ”(不带引号)。
【输入输出样例】
magic.in
19
magic.out
1621296000000000000
【数据范围】
对于 30%的数据:1 ≤ N ≤ 10。
对于 50%的数据:1 ≤ N ≤ 35。
对于 100%的数据:1 ≤ N ≤ 100。
#include <bits/stdc++.h>
#define pr printf
using namespace std;
const int INF=0x1f1f1f1f;
inline int read()
{
char ch;
int x,f=1;
for(ch=getchar();ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f*=-1;
for(x=0;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return x*f;
}
int main()
{
int n=read(),i;
if(n<=4)
{
printf("QwQ");
return 0;
}
else if(n%3==2) printf("73584"),n-=5;
else if(n%3==0) printf("324000"),n-=6;
else printf("1621296"),n-=7;
for(i=1;i<=n;i++) printf("0");
return 0;
}