#前提・実現したいこと
競技プログラミング初心者です。
Pythonからプログラミングを始め、C++を今回始めて触っています。
AtCoderのB - Multiplication2 を解こうとしています。
値の大きさより、intではなくlong longを使ったコードを作成しました。
しかし、long longでも10の19乗を超える値は、オーバーフローしてしまいます。
#試したこと
こちらのサイトに書かれてい解決策を参考に、値に解決しようとしました。
しかし、2つ目のifに書かれている-1
が出力されてしまいます。
#発生している問題・エラーメッセージ
計算結果がオーバーフローしてしまって、値がうまく出力されない。
#該当のコード
C++
1#include <iostream> 2using namespace std; 3int main(void){ 4 // Your code here! 5 int N; cin>>N; 6 int ans=1; 7 for (int i=0;i<N;i++){ 8 int num; cin>>num; 9 if (num==0) { 10 cout<<"0"<<endl; 11 exit(0); 12 } 13 14 if (ans<=1e18/num){ 15 cout<<"-1"<<endl; 16 exit(0); 17 } 18 19 ans*=num; 20 } 21 cout<<ans<<endl; 22} 23
#教えていただきたいこと
2点あります。
1、どのようにコードを変えればいのか?
3、解決方法の導き方
自力で解決できるようになりたいので!
回答3件
あなたの回答
tips
プレビュー