(你不是看我封面才进来的吧)
原题
题目描述
给你一个整数数字,将其“五舍六入”,末尾为5及5以下的数字就舍去,6以及6以上的数字进位,求最终的数字。
输入格式
一行,一个整数n(0<=n<=10^9 )
输出格式
一行,一个整数,五舍六入后的结果
样例输入
6
样例输出
10
这道题就是一道简单的思维题,思路轻松就能想出来。
(别看1e9的范围很大,其实只要判断个位和十位就行了)
解题思路
分支if
循环判断n的最后一位是不是大于等于6,如果是的话就进一,不是的话就变为0。
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
if(n%10>=6) n=(n/10+1)*10; //进位过程
else n=n/10*10;
cout<<n;
return 0;
}
n=int(input())
if(n%10>=6):
n=(n//10+1)*10
else:
n=n//10*10
print(n)
巧招
其实还有一个更隐蔽的思路:先用n加上4 (就是10-6),再去掉个位,这样如果n的十位大于等于6,就自动完成了进位,否则就舍掉,是不是很好?
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
n=(n+4)/10*10;
cout<<n;
return 0;
}
n=int(input())
n=(n+4)//10*10
print(n)
延伸
由五舍六入的思路,我们也可以进而得出所有类似题目的思路
例:N舍M入
给你一个整数数字和两个小于十的整数N和M,将整数数字“N舍M入”,末尾为N及N以下的数字就舍去,M以及M以上的数字进位,求最终的数字。
思路:直接用这个数加上 (10-M)再除以十并模十,就行了。
#include<iostream>
using namespace std;
int main(){
int a,n,m;
cin>>a>>n>>m;
a=(a+(10-m))/10*10;
cout<<a;
return 0;
}
s=input().split() #用空格分隔数字
a,n,m=int(s[0]),int(s[1]),int(s[2])
a=(a+(10-m))//10*10
print(a)
本期内容就到这里啦,掰掰ヾ(•ω•`)o
本文可以转载,但请注明作者,谢谢