-1

だから、私はオンラインチャレンジをやっていて、これが私がしなければならないことです:私は魔法の数「N」を出力しなければなりません。その後、あなたは魔法を形成するために「N」の量の呪文を入力します。

したがって、基本的に、入力例は次のとおりです。

5
3
2
1
1
0

魔法の場合は3+2 = 5であるため、これの出力は2になります。ただし、重要な注意点(私が問題を抱えているのは、各呪文の値が+1であるということです)

例:

12
5
5
4
4
4
3
3
3
2
2
2
1

したがって、5 + 5 = 10ですが、各呪文には+1の値があるため、6 + 6=12です。したがって、出力は2になります。

これが私のコードですが、何らかの理由で3を出力します。

#include <iostream>
using namespace std;
int main()
{

    int n,c=0,br=0;
    cin>>n;
    int a[150];

    for(int i=0;i<n;i++)
    {
        cin >> a[i];
        a[i]+=1;
        while(c<=n)
        {
            c+=a[i];
            br++;
        }
    }


    if(a[0]==n-1)
    br--;

    cout << br << endl;
    return 0;
}
4

1 に答える 1

1

サイキックデバッグスキルの使用:

while(c<=n)

呪文の合計が呪文の数以下であることを意味します。

つまり、最初の5つの呪文(合計は6)を使用し、次に次の5つの呪文(合計は12)を使用します。それでも、呪文の数(12)以下であるため、最初の4つの呪文を使用します。 (合計は16になりました)。c<nの代わりにそこが欲しかったと思いますc<=n

無関係:あなたの質問はひどく言葉で表現されており、ほとんど意味がありません。

于 2013-02-25T20:47:47.083 に答える