ACdream 1408 "Money, Money, Money"(找规律)

来源:互联网 发布:什么软件购物返利 编辑:程序博客网 时间:2024/04/19 23:16

"Money, Money, Money"

Special Judge Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)
Submit Statistic Next Problem

Problem Description

      The government of Flatland has decided to carry out the money system reform. The purpose of the reform is to reduce the number of different banknotes denominations down to two. After the reform there will be two types of banknotes — a tupiks and b tupiks.
      The problem is that the president of Flatland doesn’t like the number x. Therefore the minister of finances was instructed to choose such a and b that it is impossible to pay exactly x tupiks without change. On the other hand it must be possible to pay all amounts larger than x.
      Now you are asked to help him — choose such a and b, or recommend the minister to retire, if it is impossible.

Input

      Input file contains one number x (1 ≤ x ≤ 1012).

Output

      Output two integer numbers a and b, such that it is impossible to pay x tupiks using banknotes of a and b tupiks without change, but it is possible to pay any larger sum. If it is impossible, output two zeroes to the output file.

Sample Input

345

Sample Output

2 50 03 4

题目大意:

给出一个数x,输出两个数a,b,要求任意个a与任意个b不能组合出x,但能组合出x之后的所有正整数(多种答案只要输出任意一种)。

解题思路:
题目看上去很难→_→。
当x是偶数时,找不到a和b满足题意;
当x是奇数时,我们要找到a和b使得它们能组成任何大于x的正整数。由于这些正整数中有奇数有偶数,所以一定要挑出一个2,因为2能组成所有的正偶数,然后再选出x+2即可,因为x是奇数,x+1一定是偶数,可以由2组成,x+2不能由2组成,所以必须挑出x+2。这样就可以使得x以后的所有偶数都由2组成,所有奇数的由x+2和若干个2组成。


参考代码:

#include <cstdio>int main(){    long long x;    while(~scanf("%lld",&x))    {        if(x&1) printf("2 %lld\n",x+2);        else printf("0 0\n");    }    return 0;}


2 0
原创粉丝点击