UESTC - 1251 谕神的密码 (模拟) 水

UESTC - 1251
Time Limit: 1000MS Memory Limit: 65535KB 64bit IO Format: %lld & %llu

 Status

Description

谕神是集训队里面智商数一数二的大神,在他的电脑里储存着他在学习的东西。每天都要通过学习来提高自己的知识水平。然而,作为一个长者,谕神不愿意将自己的学习资料给那些too young, too simple, sometimes naive的人看,以免被他们看了去搞一个大新闻。于是,谕神给自己的电脑设置了密码。

当然,他设置的密码也要按照基本法。这个基本法是谕神自己搞出来的。法则是这样的:

1、密码由 位数组成,中间由空格隔开,其中,两个数的各个位的和均为

2、是满足1条件的最小的数和最大的数

3、当找不到 位数的和为s的时候,密码就是:-1 -1

4、谕神保证密码的 个数中没有前导

他这个密码只是为了防止too young, too simple, sometimes naive的人进入电脑的,对于你们这些高智商的人群,破译密码应该并不难吧~~

注意,单独的 ,是合法的哦~

Input

先读入一个 t,为数据组数

每组数据只有一行,为 n和 s.

Output

输出谕神的密码

Sample Input


2 15

Sample Output

69 96

Hint

就一组测试数据 
位数各位和为 的最大值是96 , 最小值是69.

//思路:

三个条件逐一让得到的两个数满足。

首先找最大的数高位的数越大那么得到的数也就越大,所以从第一位就让它等于9,以此类推,如果s的值不够则补0,

然后再找最小的值,如果得到的最大值的最后一位不为0,那么最小值即为得到的最大值的翻转后的值,若最大值最后一位是0,那么先将最小值的首位赋值为1,然后找到第一个不为0的数将其减1即可。

Hait:当n=1,s=0时,输出0 0(在这块WA了一次ToT).

           当(n*9<m)||(n>1&&m==0)时,输出-1 -1.

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#define INF 0x3f3f3f3f
#define ll long long
#define N 10010
#define M 1000000007
using namespace std;
int a[110];
int b[110];
int main()
{
	int t,n,m;
	int i,j,k;
	scanf("%d",&t);
	while(t--)
	{
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		scanf("%d%d",&n,&m);
		if((n*9<m)||(n>1&&m==0))
		{
			printf("-1 -1\n");
			continue;
		}
		if(m==0)
		{
			printf("0 0\n");
			continue;
		}
		k=0;
		while(m>9)
		{
			a[k++]=9;
			m-=9;
		}
		a[k++]=m;
		if(k<n)
		{
			for(i=k;i<n;i++)
				a[i]=0;
		}
//		for(i=0;i<n;i++)
//			printf("%d",a[i]);
//		printf("\n");
		int kk;
		for(i=n-1;i>=0;i--)
		{
			if(a[i])
			{
				kk=i;
				break;
			}
		}
		if(kk==n-1)
		{
			int l=0;
			for(i=n-1;i>=0;i--)
				b[l++]=a[i];
		}
		else
		{
			int l=0;
			b[l++]=1;
			for(i=n-2;i>=0;i--)
			{
				if(i==kk)
					b[l++]=a[i]-1;
				else
					b[l++]=a[i];
			}
		}
		for(i=0;i<n;i++)
			printf("%d",b[i]);
		printf(" ");
		for(i=0;i<n;i++)
			printf("%d",a[i]);
		printf("\n");
	}
	return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
互联网络程序设计是指在互联网上进行程序开发和设计的过程。UESTC则是我国的一所著名高校——电子科技大学。 互联网络程序设计 uestc包含了两个主要的方面:互联网络和程序设计。互联网络是指将多个计算机网络通过通信链路互相连接起来,实现信息共享和资源共享的网络系统。程序设计是指根据需求和目标,通过编写代码和设计算法,实现计算机程序的过程。 互联网络程序设计 uestc的学习内容主要包括以下几个方面: 1. 网络知识:学习互联网络的基本概念、原理和协议,如TCP/IP协议、HTTP协议等。掌握网络编程的基本技术,能够编写网络应用程序。 2. 数据通信:学习数据通信的基本原理和技术,包括数据传输的方式、数据压缩和加密等。了解网络安全和数据保护的基本知识。 3. 程序设计:学习编程语言和开发工具,如Java、C++和Python等。掌握常用的编程技巧和方法,能够设计和实现复杂的网络应用程序。 4. Web开发:学习Web开发的基本知识和技术,包括HTML、CSS、JavaScript等。能够设计和实现交互式的Web应用程序。 5. 数据库技术:学习数据库的基本原理和技术,如SQL语言和数据库管理系统。能够设计和管理数据库,实现数据的存储和检索。 通过学习互联网络程序设计 uestc,可以掌握互联网应用开发的基本技能,具备设计和实现网络应用程序的能力。这对于目前互联网行业的人才需求来说是非常重要的,也为学生提供了广阔的就业和创业机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值