有一个WA,孩子找不到错误,求解!!!

P1150 Peter 的烟

coding9 @ 2021-10-23 15:39:16


#include<iostream>
using namespace std;
int main(){
    int n,k,i,j,sum;
    cin>>n>>k;
    i=n/k;
    j=i/k;
    if(i<k)
    sum=i*k+n%k+i;
    if(i>=k)
    sum=i*k+n%k+i+j;
    cout<<sum;
    return 0;
}

by 圣啦啦 @ 2021-10-23 16:00:57

这个题应该要用到循环啊,因为它不是只换一次,也就是说他会用那烟蒂换来的烟,再去换烟,这是一个不断循环的过程,所以你只换一次应该是不对的


by 圣啦啦 @ 2021-10-24 08:08:30

#include <bits/stdc++.h>
using namespace std;
int main()
{
  int n;
int k;
  cin>>n;
cin>>k;
  int tot=0;
  int sum=n;
  while(n>=k){
    tot+=(n/k);
    n=n-(k-1)*(n/k);
  }
  cout<<sum+tot;
  return 0;
}

你看这个代码,你能不能看懂,简单说就是用了一个while循环,求出能还多少个烟蒂,然后再把用烟蒂换来的烟加回去,继续求烟蒂,这是一个循环的过程. 整体上用到的方法就是模拟


by sleven_bird @ 2021-11-20 13:35:14

#include<iostream>
using namespace std;
int main()
{
    int n,k,a,b=0,s=0;
   cin>>n>>k;a=n;
    while (a!=0)
    {
        if(b==k)
        {
            if(a!=0)
            {
                a++;
                b=0;
            }
        }
        else
        {
            b++;
            a--;
            s++;
        }
    }
    cout<<s;
    return 0;
}

|