2021年トレーニングリーグウォームアップトレーニングコンペティションの回文となる2番目のC.Tip

回文になるためのヒント

タイトルリンク:https//ac.nowcoder.com/acm/contest/12794/C

タイトル説明

クールなUCFCS卒業生の1人は、パリンドロームティッパーのグレッグ博士です。回文は
、同じ前後に同じ文字列を読み取る文字列です。たとえば、madam、abba、3、44、525です。Greg
博士のすばらしい点の1つは、外食するときに少なくとも20%のチップを残すことです。食事は30で、グレッグ博士は30を残し、グレッグ博士はチップとして6(30 * .20)を残します。チップ(20%)が整数でない場合、彼はチップを切り上げて整数にします。たとえば、食事が12の場合、20%のチップは12、a202.40(12 * 0.20)になりますが、グレッグ博士はチップに3ドルを残します。
グレッグ博士のもう一つのクールな点は、彼が回文の第一人者であるということです。彼の合計請求額(食事とチップ)が回文でない場合、彼は合計を(チップに追加することによって)増やして、合計を回文にします。もちろん、彼は全体を回文にするために必要な最小限のものを追加します。
問題:
グレッグ博士の食事代を考えると、あなたのプログラムは彼のチップ額(彼の規則に従って)と総請求額を決定する必要があります。

説明を入力してください:

最初の入力行には、グレッグ博士が食べた回数を示す正の整数nが含まれています。食事代は、次のn個の入力行に1行に1つずつあります。各入力には、5〜10000(両端を含む)の整数が含まれます。

出力の説明:

各テストケースの開始時に、「入力コスト:c」を出力します。ここで、cは入力コストです。次に、次の出力行で、チップの金額と合計請求額を1つのスペースで区切って印刷します。各テストケースの出力の後に空白行を残します。

例1

入力
2
12
84
出力
入力コスト:12
10 22

入力コスト:84
17101

本旨:

ヒント=(消費* 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;
}

おすすめ

転載: blog.csdn.net/weixin_45894701/article/details/114852149