1. 程式人生 > >【題解】LightOJ1163 Bank Robbery 列舉+數學知識

【題解】LightOJ1163 Bank Robbery 列舉+數學知識

題目連結

Description

In one very cold morning, Mark decides to rob a bank. But while trying hacking into the security system, he found that it is locked by some random value. He also found a pattern on the random number, that is if he chops off the last digit of a number A, he gets a new number B. Then he calculates (A-B). He checked the first few numbers of the security system which exactly equals (A-B). Being very excited to have found the pattern, he learns that there are like 500 levels on the security system. He calculated all those numbers by hand but took a lot of time. As a sign of his accomplishment he left a note on the vault stating the pattern. You were the first officer on the crime scene and you’ve obtained the note. So if you can figure out A from (A-B), you can rob the bank very quick!

By the way, Mark succeeded in robbing the bank but had a heart attack on the getaway car and crashed.

Input

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

Each line contains a single positive integer between 10 and 1018 (inclusive), giving the value of A-B.

Output

For each case, print the case number and the possible values of A in ascending order. Separate consecutive numbers with a single space.

Sample Input

4

31

18

12

17

Sample Output

Case 1: 34

Case 2: 19 20

Case 3: 13

Case 4: 18

寫出方程,列舉求出解

#include<cstdio>
typedef unsigned long long ull;
int t,ca;
ull a,b;
int main()
{
    //freopen("in.txt","r",stdin);
    scanf("%d",&t);
    while(t--)
    {
        scanf("%llu
"
,&b); printf("Case %d:",++ca); for(int i=9;i>=0;i--) if((10*b-i)%9==0)printf(" %llu",(10*b-i)/9); puts(""); } return 0; }