質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

626閲覧

Atcoder 部分和問題

hakubo2

総合スコア11

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/05/06 12:48

Atcoderの部分和問題でWAが出てしまいます。
Bit全探索をしようと思っているのですが、入力例2の出力が正しく出てきません。
どこが間違っているのでしょうか。

cpp

1#define _GLIBCXX_DEBUG 2#include <bits/stdc++.h> 3using namespace std; 4typedef long long ll; 5#define REP(i,n) for(ll i=0;i<(ll)(n);i++) 6#define REPD(i,n) for(ll i=(ll)(n)-1;i>=0;i--) 7#define FOR(i,a,b) for(ll i=(a);i<=(b);i++) 8#define FORD(i,a,b) for(ll i=(a);i>=(b);i--) 9#define ALL(x) (x).begin(),(x).end() //sortなどの引数を省略したい 10#define SIZE(x) ((ll)(x).size()) //sizeをsize_tからllに直しておく 11#define MAX(x) *max_element(ALL(x)) 12#define INF 1000000000000 13#define MOD 10000007 14#define PB push_back 15#define MP make_pair 16#define F first 17#define S second 18 19string S; 20 21ll solve(){ 22 ll sum=0; 23 for(int bit=0; bit < ( 1<<S.size()-1 ); bit++){ 24 int cnt=1; 25 sum += S[0] - '0'; 26 for(int i=0; i<S.size()-1; i++){ 27 if(bit & (1<<i)){ 28 cnt = 1; 29 sum += S[i+1] - '0'; 30 } 31 else{ 32 cnt *= 10; 33 sum += cnt * ( S[i+1] - '0' ); 34 } 35 } 36 } 37 return sum; 38} 39 40int main() { 41 cin >> S; 42 reverse(S.begin(), S.end()); 43 cout << solve() << endl; 44}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

cntintなので掛け算でオーバーフローしています。
ll cnt=1;に変えると、サンプル2が合いました。

投稿2020/05/06 13:05

編集2020/05/06 13:06
minaminao

総合スコア249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hakubo2

2020/05/06 13:28

ありがとうございます。 cntは最悪10^10されますね。 感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問