下のコードのsolve(long num, のところをint numにすると
888888888(9個)
と入力すると
0
7
77
777
7777
77777
777777
7777777
77777777
777777777
-812156815
468366449
といった出力がされます。
オーバーフロー後の出力は下のプログラムに沿っていますか?
つまり、-812156815 は n = 888888888 より小さいので10倍されて7足されると思っています。
c++
1#include<iostream> 2using namespace std; 3int n, ans = 0; 4void solve(long num, bool s, bool t, bool r) { 5 cout << num << endl; 6 if (num > n) return; 7 if (s && t && r) ans++; 8 solve(num * 10 + 7, true, t, r); 9 solve(num * 10 + 5, s, true, r); 10 solve(num * 10 + 3, s, t, true); 11} 12int main() { 13 cin >> n; 14 solve(0, false, false, false); 15 cout << ans << endl; 16}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。