17 条题解
-
17
啊这这这这这这……我第一眼看到这道题的时候直接退出了,我以为我进到了三星题单…… 话不多说,上思路!
点我解锁思路
恭喜你!!迈出了成功的第一步!!!告诉你,这
是一道水题道题的做法需要贪心。话不多说,上代码!!!点我解锁代码
恭喜你!!!又迈出了一步!!!给你代码!!!
#include<bits/stdc++ h> //黄钰轩 (幻想一笑而过) using namespace std; int m,k,ans,a; int main() { cin>>m>>k; while(m){ m--; a++; ans++; if(a==k){ m++; a=0; } } cout<<ans; return 0; }
快去试试吧!
警告!!警告!!陷阱!!!
恭喜你!!!点开了陷阱!!! 刚才的代码…… 编译错误!!!点击解锁AC代码
#include<bits/stdc++.h>//黄钰轩 (幻想一笑而过) int m,k,ans,a; int main(){ cin>>m>>k; while(m){ m--; a++; ans++; if(a==k){ m++; a=0; } } cout<<ans; return 0; }
刷题很快乐,题解不容易。要是没有赞,作着两行泪!!! (如果想知道我的下拉箭头是怎样的,请点赞并在这题的讨论区回复“@青蛙:已点赞”这句话,我将为大家演示!!!)
-
2
优化使我快乐!
这题的模拟很容易就可以被我们写出。
一般的思路都是一天一天模拟,但如果我们换一种思路呢?
我们不妨每次将 ,如果这时的 那么就说明禾木可以领取 元了,否则就不能领取,循环退出。
AC 代码( 最长时间:1ms 总:5ms ):
#include <cstdio> using namespace std; int k , m , day; int main(void){ scanf("%d%d" , &m , &k); while(m > 0){ m -= k; if(m >= 0){ m++; day += k; } else day += m + k; } printf("%d\n" , day); }
然而我并不满意,这时我们很容易即可想到,我们可不可以一次用去 天呢?
答案是可以的。我们将 AC 代码稍加修改。
AC 代码( 最长时间:0ms 总时间:4ms ):
#include <cstdio> using namespace std; int k , m , day; int main(void){ scanf("%d%d" , &m , &k); while(true){ int x = m / k; if(x == 0){ printf("%d\n" , day + m); return 0; } m -= k * x - x; day += k * x; } }
附:极简代码:
#include <cstdio> int k,m,day,x;//提示:被看这个代码,眼会虾 int main(void){ for(std::scanf("%d%d",&m,&k);;m-=(k-1)*x,day+=k*x){ x=m/k; if(!x){std::printf("%d",day+m);break;} } }
-
1
#include <bits/stdc++.h> using namespace std; int main() { //思路:很很很很很纯粹的模拟 //两种解法:一天一天模拟\每k天一模拟 这里用第二种(第一种已经有人写了) int m,k,t = 0; //t是答案 cin >> m >> k; while(true) //在里面加break就行 { if(m >= k) //如果正好够消费的 { m -= k;//这里其实可以化简,但我太懒了😁 m ++; t += k;//因为每天只用1元,所以不用做——————的计算 } else //手机“临终”前(要拨打10086)的计算 { t += m; break; } } cout << t; return 0; }
-
0
写题解请注意
鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
-
0
//《来自一个蒟蒻的题解——H0806A》 // ———邬某人 #include<bits/stdc++.h>//万能头文件,记不住头文件就用ta using namespace std; int main() { int m,k,s=0;//定义m、k,和计数变量s(输出的天数) cin>>m>>k;//输入变量 for(s=0;m>0;m--,s++)if(s%k==0)m++;//每次循环s+1(天数+1),m-1(钱数-1),如果天数是k的倍数,m+1(因为天数+1=钱数-1,所以天数可以代替钱数判断,且更容易计算) //(for循环可直接减去m,加上s,非常方便,还省行数,所以我用ta:)) cout<<--s;//因为for循环多运行了一次,所以要减去 return 0;//华丽的收尾 }
- 1
信息
- ID
- 1337
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 686
- 已通过
- 363
- 上传者