简单细节题:
#include<iostream>#include<cstdio>#include<cmath>#include<map>#include<cstring>#include<algorithm>#define rep(i,a,b) for(int i=(a);i<(b);i++)#define rev(i,a,b) for(int i=(a);i>=(b);i--)#define clr(a,x) memset(a,x,sizeof a)typedef long long LL;using namespace std;const int mod=1e9 +7;const int maxn=105;const int maxm=905;int da[maxn],db[maxn];int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { if(m>9*n||(n!=1&&m==0)) { printf("-1 -1\n"); continue; } int cnt=0,ccnt=0,num=m; while(num-9>=0)db[ccnt++]=9,num-=9; if(num)db[ccnt++]=num; while(n!=ccnt)db[ccnt++]=0; num=m; while(1<=num-9)da[cnt++]=9,num-=9; if(n-1==cnt) { da[cnt++]=num; for(int i=cnt-1;i>=0;i--) printf("%d",da[i]); printf(" "); for(int i=0;i<ccnt;i++) printf("%d",db[i]); printf("\n"); continue; } da[cnt++]=num-1;num=1; while(n-1!=cnt) da[cnt++]=0; da[cnt++]=1; for(int i=cnt-1;i>=0;i--) printf("%d",da[i]); printf(" "); for(int i=0;i<ccnt;i++) printf("%d",db[i]); printf("\n"); } return 0;}
C. 指定された長さと桁の合計...
テストごとの制限時間
1 秒
テストごとのメモリ制限
256メガバイト
入力
標準入力
出力
標準出力
正の整数 m と負でない整数 s があります。あなたのタスクは、長さ m と桁の合計 s の数値の最小値と最大値を見つけることです。必要な数値は、先頭にゼロのない 10 進数で書かれた非負の整数である必要があります。
入力
入力の 1 行には、整数のペア m, s (1?≤?m?≤?100, ?0?≤?s?≤?900) ?必要な数値の長さと桁の合計。
出力
出力では、必要な非負の整数のペアを出力します。最初に可能な最小数、次に ?可能な最大数。必要な条件を満たす数値が存在しない場合は、数値のペア "-1 -1" (引用符なし) を出力します。
サンプル テスト
入力
2 15
出力
69 96
入力
rree
出力
3 0