トップページに戻る
次のC++のサンプルへ
前のC++のサンプルへ
Problem52 2X,3X,4X,5X,6XがXと同じ数を含む
問題
125874を2倍すると251748となる. これは元の数125874と同じ数を含む.
2X,3X,4X,5X,6XがXと同じ数を含むような最小の正整数Xを求めよ.
ソース
#include <Windows.h>
#include <string>
void main()
{
for (int I = 1; I <= 200000; I++) {
bool IsOK = true;
for (int J = 2; J <= 6; J++) {
int ProdVal = I*J;
char wkCharArr[100];
wsprintf(wkCharArr,"%d",I);
std::string StrI = wkCharArr;
wsprintf(wkCharArr,"%d",ProdVal);
std::string StrProd = wkCharArr;
for(int K=0;K<=(int)StrProd.size()-1;K++){
if(StrI.find(StrProd.at(K)) == std::string::npos){
IsOK = false;
break;
}
}
if (IsOK == false) break;
}
if (IsOK) {
printf("Answer=%d\n",I);
return;
}
}
}
実行結果
Answer=142857
解説
stringクラスのfindメソッドを駆使してます。