谕神的密码
Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
SubmitStatus
谕神是集训队里面智商数一数二的大神,在他的电脑里储存着他在学习的东西。每天都要通过学习来提高自己的知识水平。然而,作为一个长者,谕神不愿意将自己的学习资料给那些too young, too simple, sometimes naive的人看,以免被他们看了去搞一个大新闻。于是,谕神给自己的电脑设置了密码。
当然,他设置的密码也要按照基本法。这个基本法是谕神自己搞出来的。法则是这样的:
1、密码由2 个n 位数组成,中间由空格隔开,其中,两个数的各个位的和均为s
2、是满足1条件的最小的数和最大的数
3、当找不到n 位数的和为s的时候,密码就是:-1 -1
。
4、谕神保证密码的2 个数中没有前导0 。
他这个密码只是为了防止too young, too simple, sometimes naive的人进入电脑的,对于你们这些高智商的人群,破译密码应该并不难吧~~
注意,单独的0 ,是合法的哦~
Input
先读入一个T (0≤T≤100 ),为数据组数
每组数据只有一行,为n (0<n≤100 )和s (0≤s≤900 ).
Output
输出谕神的密码
Sample input and output
Sample Input | Sample Output |
---|---|
| |
Hint
就一组测试数据 2 位数各位和为15 的最大值是96 , 最小值是69 .
Source
第七届ACM趣味程序设计竞赛第二场(正式赛)
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,s;
int i,j;
scanf("%d%d",&n,&s);
if(n==0)
{
printf("-1 -1");
}
if(s==0)
{
if(n==1)
{
printf("0 0");
}
else
{
printf("-1 -1");
}
}
else if(s>9*n)
{
printf("-1 -1");
}
else if(s==9*n)
{
for(int i=1;i<=n-1;i++)
printf("9");
printf("9 ");
for(int i=1;i<=n;i++)
printf("9");
}
else
{
int xx,yy;
xx=s/9;
yy=s-xx*9;
//xiao
//printf("1");
if(yy==0)
{
//int xy;
if(xx==n)
{
printf("%d",yy);
for(i=1;i<=xx;i++)
printf("9");
}
else
{
int yu=8;
printf("1");
for(i=1;i<=n-1-xx;i++)
{
printf("0");
}
printf("%d",yu);
for(i=1;i<=xx-1;i++)
printf("9");
}
}
else
{
int xy;
xy=xx+1;
if(xy==n)
{
printf("%d",yy);
for(i=1;i<=xx;i++)
printf("9");
}
else
{
printf("1");
for(i=1;i<=n-1-xx-1;i++)
{
printf("0");
}
printf("%d",yy-1);
for(i=1;i<=xx;i++)
printf("9");
}
}
// 大
printf(" ");
for(i=1;i<=xx;i++)
printf("9");
printf("%d",yy);
for(i=1;i<=n-xx-1;i++)
{
printf("0");
}
}
printf("\n");
}
return 0;
}