90分萌新求助

P1150 Peter 的烟

Old_fox @ 2018-07-08 09:45:32

include<bits/stdc++.h>

using namespace std; int y(int a,int b) { int n; if(a<b) return a; else n=a; a=a/b; return n+y(a,b); } int main() { int n,k; cin>>n>>k; cout<<y(n,k); return 0; }


by Keenny @ 2018-07-08 09:49:55

巧了 我也是这题90分 放上我的代码

#include <iostream>
using namespace std;
int main()
{
    int k,n,t,v,s;
    cin>>k>>n;
    t=k%n;
    v=(k-t)/n;
    s=k+v;
    while((t+v)>n)
        {
            t=(t+v)%n;
            v=(v)/n;
            s=s+v;  
        }
    cout<<s;
    return 0;
}

by Keenny @ 2018-07-08 09:50:12

@Old_fox 我也是这题90分


by Old_fox @ 2018-07-08 09:53:43

#include<bits/stdc++.h>
using namespace std;
int y(int a,int b)
{
    int n;
    if(a<b)
    return a;
    else
    n=a;
    a=a/b;
    return n+y(a,b);
}
int main()
{
    int n,k;
    cin>>n>>k;
    cout<<y(n,k);
    return 0;
}

by Old_fox @ 2018-07-08 09:54:07

错在哪了?


by SkyLiYu @ 2018-07-08 10:11:18

@Old_fox 您这代码怎么连缩进都没有,完全看不懂(没缩进我理解能力有限)


by ComeOver· @ 2018-07-08 10:24:24

#include <iostream>
using namespace std;
int main(){
    long long a,b,c=0,n=0,m=0;
    cin>>a>>b;
    while(a>0||n>=b){
        c=c+a;
        n=a+m;
        m=n%b;
        a=n/b;

    }
    cout<<c;
    return 0;
}

@Old_fox 这是我的做法

您的做法的第9,10,11行有错

    n=a;
    a=a/b;
    return n+y(a,b);

因为这时的a表示的是当前可以换到几根烟,您这样会把不足b的几根烟头“扔掉了”。

你试试1000 3这一组


by Old_fox @ 2018-07-08 10:26:06

@duboyan 谢谢


by ComeOver· @ 2018-07-08 10:26:47

@Old_fox 没关系


by xiangling @ 2018-07-08 10:28:48

#include<bits/stdc++.h>
using namespace std;
int sum,lest;
int main()
{
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)
    {
        sum++;lest++;
        if(lest%k==0)
        {
            sum++;
            lest=1;
        }
    }
    printf("%d",sum);
    return 0;
}

by Dr_kkk @ 2018-07-16 12:02:27

事实上当Peter做烟的时候,会出现有些烟头还没有被用到的情况,就是这样。

或者还有一种简洁有效却不太好的操作:骗分(if)······


| 下一页