geeksforgeeksのテストケースを解決しようとしています整数が8の累乗であるかどうかを確認してください。長整数型はC++で8の累乗では機能しません
私はC++を使用してテストケースを作成しました。このプログラムでは、私は8589934592
のような長い整数を提供します。ただし、条件がfalse
になり、テストケースが失敗しました。
#include <iostream>
using namespace std;
int main()
{
unsigned int n, n1;
cin>>n; // Denoting the number of test cases
for(int i = 0; i < n; i++)
{
cin>>n1; // An integer number
while(n1 > 8)
{
n1 = n1/8;
}
if(n1 == 8)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
return 0;
}
なぜ、テストケースが8の長時間使用できないのはなぜですか?ここで
は、サンプル入力です:
2
307163648379016
8589934592
所望の出力:
No
Yes
あなたの入力番号は、「符号なし整数」の可能な最大値よりも大きいです。あなたは 'uint64_t'をタイプ –
として試すことができます。C++は静的に型付けされています。 'cin'はnやn1を魔法のように' long'整数に変換しません。 @ – StoryTeller
@M。長い番号のようにも動作しないM:307163648379016 – Jayesh