Codeforces 489C 简单构造
2015-01-12 15:06
351 查看
传送门:
http://codeforces.com/contest/489/problem/C
Given Length and Sum of Digits...
[align=center]time limit per test[/align]
[align=center]1 second[/align]
[align=center]memory limit per test[/align]
[align=center]256 megabytes[/align]
[align=center]input[/align]
[align=center]standard input[/align]
[align=center]output[/align]
[align=center]standard output[/align]
You have a positive integer m and a non-negative integers. Your task is to find the smallest and the largest of the numbers that have lengthm
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
Output
Input
Output
题意:给一个数的位数和每一位的和,问这个数最大是多少,最小是多少。不存在输出-1
思路:先检查合法性,是否输出-1 -1;
构造最小数:从尾部开始构造,直接填9(或者剩下的数的和-1),最后剩下的数应该大于等于1,这个填到首位。其他地方填0.
构造最大数:从首位开始构造,直接填9(或者剩下的数的和),其他的地方直接填0.
代码:
http://codeforces.com/contest/489/problem/C
Given Length and Sum of Digits...
[align=center]time limit per test[/align]
[align=center]1 second[/align]
[align=center]memory limit per test[/align]
[align=center]256 megabytes[/align]
[align=center]input[/align]
[align=center]standard input[/align]
[align=center]output[/align]
[align=center]standard output[/align]
You have a positive integer m and a non-negative integers. Your task is to find the smallest and the largest of the numbers that have lengthm
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
题意:给一个数的位数和每一位的和,问这个数最大是多少,最小是多少。不存在输出-1
思路:先检查合法性,是否输出-1 -1;
构造最小数:从尾部开始构造,直接填9(或者剩下的数的和-1),最后剩下的数应该大于等于1,这个填到首位。其他地方填0.
构造最大数:从首位开始构造,直接填9(或者剩下的数的和),其他的地方直接填0.
代码:
#include<cstdio> int main() { int n,m; while(~scanf("%d %d",&n,&m)) { if(m==0&&n==1) { printf("0 0\n"); continue; } if(m<1||n*9<m) { printf("-1 -1\n"); continue; } char s[200]={0}; for(int i=1;i<=n;i++) { int tmp=m; if(tmp>=9) { s[i]=9+48; m-=9; } else { s[i]=tmp+48; m-=tmp; } } char temp[105]; sprintf(temp,"%s",s+1); if(s =='0') { s ++; for(int i=n-1;i>=1;i--) if(s[i]>48) { s[i]--; break; } } for(int i=n;i>=1;i--) printf("%c",s[i]); printf(" "); printf("%s\n",temp); } return 0; }
相关文章推荐
- CodeForces 740C Alyona and mex 简单构造题
- Codeforces 791C Bear and Different Names 简单构造
- codeforces 359B B. Permutation(简单构造)
- 【Codeforces 631 B Print Check 】+ 简单构造
- 【打CF,学算法——二星级】Codeforces 584C Marina and Vasya (简单构造)
- Windows+cygwin下构造arm-linux交叉编译环境最简单的方法
- 如何构造一个简单的USB过滤驱动程序
- C#中类的构造方法的简单说明
- 双数组trie树基本构造及简单优化
- 双数组trie树的基本构造及简单优化
- 双数组trie树的基本构造及简单优化
- string类的简单构造。
- C#中类的构造方法的简单说明
- 如何构造一个简单的USB过滤驱动程序(转载)
- 双数组trie树基本构造及简单优化
- 基于tcp/ip协议的Socket网络通讯 --> 简单的数据传送和库构造
- 【转帖】如何构造一个简单的USB过滤驱动程序
- (Delphi) TStringList的用法 构造简单数据库
- 使用gtype构造的一个简单学生管理程序其他属性自己加
- 双数组trie树的基本构造及简单优化