C. Given Length and Sum of Digits...
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
You have a positive integer m and a non-negative integer s. Your task is to find the smallest and the largest of the numbers that have length m and sum of digits s. The required numbers should be non-negative integers written in the decimal base without leading zeroes.
Input
The single line of the input contains a pair of integers m, s (1?≤?m?≤?100,?0?≤?s?≤?900) ? the length and the sum of the digits of the required numbers.
Output
In the output print the pair of the required non-negative integer numbers ? first the minimum possible number, then ? the maximum possible number. If no numbers satisfying conditions required exist, print the pair of numbers "-1 -1" (without the quotes).
Sample test(s)
Input
2 15
Output
69 96
Input
3 0
Output
-1 -1
贪心,考虑最大的时候把数组赋值为9,考虑最小的时候把数组第一位赋值1,其他为赋值0
#include <map>#include <set>#include <list>#include <queue>#include <stack>#include <vector>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int s1[110], s2[110];int main(){ int m, s; while (~scanf("%d%d", &m, &s)) { if (s == 0 && m == 1) { printf("0 0\n"); continue; } if (m * 9 = dis) { s1[cnt] += dis; break; } dis -= (9 - s1[cnt]); s1[cnt] = 9; cnt--; } for (int i = 1; i = dis) { s2[cnt] -= dis; break; } dis -= (s2[cnt]); s2[cnt] = 0; cnt--; } for (int i = 1; i <br> <br> <p></p> </algorithm></iostream></cstring></cstdio></cmath></vector></stack></queue></list></set></map>