1 条题解
-
0
自动搬运
来自洛谷,原作者为

追梦之鲸
哼~搬运于
2025-08-24 22:28:08,当前版本为作者最后更新于2021-01-31 11:46:04,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
本蒟蒻的第篇题解。
那么好的一道打表题你们给弄成了啥!言归正传,我们可以先把~都打表,然后就有了下面一段代码
#include<bits/stdc++.h> using namespace std; int s=1; int main() { cout<<"w[10]={1,"; while(1) { s*=10; cout<<s<<","; if(s==1000000000) break; } cout<<"}"; return 0; }好了,那么再来说说判断四舍五入
判断第位需不需要四舍五入,那就要看k-1位是否,是则舍,否则入
那么怎么求
k-1位上的数呢其实很简单,那就是
c%w[k]/w[k-1],因为c%w[k]求的是的位及以下的数,在除以w[k-1]就求出了第k-1位上的数最后还有一个问题:怎么输出?
其实就是
c/w[k]*w[k]要是进一的话就是
(c/w[k]+1)*w[k]最后提醒大家:
一定要注意括号!
code:
#include<bits/stdc++.h> int sum,c,k,w[10]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000}; int main() { scanf("%d%d",&c,&k); if(k==0)return printf("%d",c) & 0;//如果k=0,那么就不需四舍五入了,直接输出就行 k=w[k];//注意这里可能和讲的不同,请见谅 sum=c%k/(k/10); if(sum<5)return printf("%d",(c/k*k)) & 0; return printf("%d",((c/k+1)*k)) & 0; //看到这有些同学可能会疑惑:return … & 0;是什么鬼?,其实它是输出并return 0 }最后管理大大求过&&来玩啊
- 1
信息
- ID
- 5823
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者