USACO1.2 Dual Palindromes(dualpal)

    從s的下一個數開始,依次檢驗是否在2~10進制的表示中,兩種或兩種以上表示形式是迴文數,若是有兩種就沒必要繼續檢測,直接輸出這個數字。直到找到n個這樣的數字。值得記一下的是這個題是第一個我首次提交即經過所有測試例的題目。下面是返回的信息:YOUR PROGRAM ('dualpal') WORKED FIRST TIME! That's fantastic -- and a rare thing. Please accept these special automated congratulations.ios

 

/*
ID:jzzlee1
PROG:dualpal
LANG:C++
*/
#include <fstream>
#include<iostream>
#include<cstring>
using namespace std;
ifstream fin("dualpal.in");
ofstream fout("dualpal.out");
bool test(int b,int n)
{
	//n化爲b進制,存進數組a[]
	int a[20];
	int i=0,sz=0;
	while(n)
	{
		a[sz++]=n%b;
		n/=b;
	}
	a[sz]=30;
	//判斷n在b進制下是否是迴文數
	bool flag=1;
	for(i=0;flag&&i<=sz/2;i++)
	{
		if(a[sz-1-i]!=a[i])
		flag=0;
	}
	return flag;
}
int main()
{
	int n,s;
	fin>>n>>s;
	int i=0,j=0,k=0;s++;
	while(i<n)
	{
		k=0;
		for(j=2;k<2&&j<=10;j++)
		{
			if(test(j,s))
				k++;
		}
		if(k==2)
		{
			fout<<s<<endl;
			i++;
		}
		s++;
	}

	return 0;

}
相關文章
相關標籤/搜索