LightOj 1001 - Opposite Task (数值和的拆分)

http://www.lightoj.com/volume_showproblem.php?problem=1001


1001 - Opposite Task

Time Limit: 0.5 second(s)Memory Limit: 32 MB

This problem gives you a flavor the concept of special judge. That means the judge is smart enough to verify your code even though it may print different results. In this problem you are asked to find the opposite task of the previous problem.

To be specific, I have two computers where I stored my problems. Now I know the total number of problems is n. And there are no duplicate problems and there can be at most 10 problems in each computer. You have to find the number of problems in each of the computers.

Since there can be multiple solutions. Any valid solution will do.

Input

Input starts with an integer T (≤ 25), denoting the number of test cases.

Each case starts with a line containing an integer n (0 ≤ n ≤ 20) denoting the total number of problems.

Output

For each case, print the number of problems stored in each computer in a single line. A single space should separate the non-negative integers.

Sample Input

Output for Sample Input

3

10

7

7

0 10

0 7

1 6

 

题意:

真是坑人的思路,给一个数字,让我们拆分两个数相加的形式,要求:
1.如果是上一步已经给定的,这次的 a 需要自加 1,;
2.不存在大于 10 的加数;
3.不存在负数的加数。


思路:

题目简单,但是错了很多次,这就是LightOJ的风格!
直接看注释吧。

参考Code:

#include<stdio.h>
#include<cstring>
#include<algorithm>
#define AC main()
using namespace std;
const int MYDD = 1103;

int AC {
	int tt, a, b, Last = -1;
	scanf("%d", &tt);
	while(tt--) {
		int n;
		scanf("%d", &n);
		if(n == 0) {
			puts("0 0");
			continue;
		}

		if(n == Last)	a++;/*和上一次键入数字相等*/
		else	a = 0;
		b = n - a;
		if(b > 10) {/*处理加数 > 10的情况*/
			b = 10;
			a = n - b;
		}
		
		if(a < 0 || b < 0) {/*处理负数的情况*/
			a = 0;
			b = n - a;
			if(b > 10) {/*处理加数 > 10的情况*/
				b = 10;
				a = n - b;
			}
		}
		
		printf("%d %d\n", a, b);
		if(a > 10)  a = 0;
		Last = n;
	}
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值