Tip to be Palindrome
题目链接:https://ac.nowcoder.com/acm/contest/12794/C
题目描述
One of the cool UCF CS alumni is Dr. Greg, The Palindrome Tipper. A palindrome is a string
that reads the same forward and backward, e.g., madam, abba, 3, 44, 525.
One cool thing about Dr. Greg is that he leaves at least 20% tip when he eats out, e.g., if the meal is 30, Dr. Greg leaves 30, Dr. Greg leaves 6 (30*.20) for tip. If the tip (20%) is not a whole dollar amount, he rounds up the tip to make it a whole number. For example, if the meal is 12, a 20% tip would be12,a202.40 (12*0.20) but Dr. Greg would leave $3 for tip.
Another cool thing about Dr. Greg is that he is a palindrome guru. If his total bill (meal plus tip) is not a palindrome, he will increase the total (by adding to the tip) to make the total a palindrome. He will, of course, add the minimum needed to make the total a palindrome.
The Problem:
Given Dr. Greg’s meal cost, your program should determine the tip amount for him (according to his rules) and the total bill.
输入描述:
The first input line contains a positive integer, n, indicating the number of times Dr. Greg ate out. The meal costs are on the following n input lines, one per line. Each input will contain an integer between 5 and 10000 (inclusive).
输出描述:
At the beginning of each test case, output “Input cost: c” where c is the input cost. Then, on the next output line, print the tip amount and the total bill, separated by one space. Leave a blank line after the output for each test case.
示例1
输入
2
12
84
输出
Input cost: 12
10 22
Input cost: 84
17 101
题目大意:
小费=(消费*0.2),求消费和小费的总和=比消费大的最小回文数。
代码如下:
#include<iostream>
#include<string>
using namespace std;
bool judge(int t){
int x=0;
int y=t;
while(t){
x=x*10+t%10;
t/=10;
}
return x==y;
}
int main(){
int T;
scanf("%d",&T);
while(T--){
int n;
scanf("%d",&n);
int cnt = n;
if(n%5==0)
n+=n/5;
else
n+=n/5+1;
while(!judge(n)){
n++;
}
printf("Input cost: %d\n%d %d\n",cnt,n-cnt,n);
printf("\n");
}
return 0;
}