2015年ブルーブリッジカップ省試合A組C/C+:奇妙な数字
2386 ワード
A組第三題:奇妙な数字
明ちゃんは奇妙な数字を見つけた.その平方と立方はちょうど0~9の10の数字を1つずつ使って1回しか使っていません.この数字はいくらだと思いますか.
この数字を記入してください.余分な内容を記入しないでください.
分析:1.変数x 2は、数字の平分を表し、x 3は数字のドレス2を表す.1つの配列testを定義[10]、10要素は(0-9)10個の数が現れる回数を表し、x 2とx 3の各ビットを取り出し、配列の10個の要素で各数が現れる回数を識別し、1回も1を加えず、最後に配列testの10個の要素が1であるかどうかを判断する.1であれば、問題の要求を満たすことを示し、1でなければ、問題の要求を満たさない.
明ちゃんは奇妙な数字を見つけた.その平方と立方はちょうど0~9の10の数字を1つずつ使って1回しか使っていません.この数字はいくらだと思いますか.
この数字を記入してください.余分な内容を記入しないでください.
分析:1.変数x 2は、数字の平分を表し、x 3は数字のドレス2を表す.1つの配列testを定義[10]、10要素は(0-9)10個の数が現れる回数を表し、x 2とx 3の各ビットを取り出し、配列の10個の要素で各数が現れる回数を識別し、1回も1を加えず、最後に配列testの10個の要素が1であるかどうかを判断する.1であれば、問題の要求を満たすことを示し、1でなければ、問題の要求を満たさない.
#include <stdio.h>
#include <math.h>
int main()
{
// ,
int i; //i 1~10000
int bit;// , 25,bit = 100, %100
int end;// 5 625,end = 625 % 10 = 5
int temp;
long long lng;
int count = 0;//
for(i = 1;i < 10000;i++)
{
bit = 1; // bit 1
temp = i;
while(temp)// , , 5 625,bit = 10。625 % 10 = 5
{
bit = bit * 10;
temp = temp / 10;
}
lng = (long long)pow(i,3);
end = lng % bit;
if(end == i) // ,
{
printf("i = %d
",i);
count++;
}
}
printf("count = %d
",count);
}