Old_fox @ 2018-07-08 09:45:32
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)······