gdut月赛C:魔幻任务

2067 ワード

Problem C:ファンタジータスク
Description
数字47は数学界の人々に幻の数字とされてきたが、47に関する任務は幻の任務とされている.ある日、doubleeggはこのような幻の任務をしていて、通りかかった奇牛が見て、彼はあなたが長い間研究して、何を研究しましたか?簡単な質問ですが、長さn位で47で最小の数を除けることができるかどうか知りたいのですが、できますか?できますか.かな??doubleeggはすでに奇牛の気場に気絶したので、この幻の任務はあなたに任せるしかありません.賢いあなたは、きっと得たいと思っています.
Input
1行目にサンプル数Tを入力(T<=1000)
次の行ごとにnを入力します(n<=10000)
Output
各行は1つの答えを出力して、存在しないと仮定して、出力-1
Sample Input
1
2
Sample Output
47
//  n             
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <vector>
#include <cstdio>
#include<map>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include<set>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 0x3f3f3f3f
#define inf -0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define mem0(a) memset(a,0,sizeof(a))
#define mem1(a) memset(a,-1,sizeof(a))
#define mem(a, b) memset(a, b, sizeof(a))
typedef long long ll;

int main(){
    int t,n;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        if(n<=2){
            if(n<=0)
                printf("-1
"); if(n==1) printf("0
"); if(n==2) printf("47
"); } else{ int ans=1; for(int i=0;i<n-1;i++){// n-1 ans=ans*10; ans=ans-ans/47*47; } printf("1"); for(int i=1;i<n-2;i++) printf("0"); if(47-ans<10) printf("0%d
",47-ans); else printf("%d
",47-ans); } } return 0; } /* : , n>=3 , n 47 ( 1) 0, , 10000...0000( n-1 0) , 47 , 47-ans */