Div3 C good number easy version

good numbers easy version

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
	int q, n;
	while(cin >> q){
		while(q--){
			cin >> n;
			int m = n;
			int i = 0;//i用来计数,计算n需要加多少个1才能变成good number 
			while(1){
				bool flag = true;//flag为true说明m是good number否则不是 
				while(m > 0){
					if(m % 3 == 2){//满足条件说明m不是good number 
						flag = false;
						break;
					}
					m /= 3;
				}//注意while循环结束后m很有可能不是原值 
				if(flag == true){
					cout << n + i << endl;//正因为m不是原值,才输出n + i
					break;
				}
				else{
					++i;
					m = n + i;
				}
			}
		}
	}
}

输入值n一直除3至0,在这个过程中只要n % 3 == 2就说明n不是good number,因为2 == 3^0 + 3^0

猜你喜欢

转载自www.cnblogs.com/theSunAndSnow/p/11749788.html