最近的数字c++

题目描述

给定两个正整数n与d,请找到所有最接近n且是d的倍数的整数。

输入

  • 第一行:单个整数表示n
  • 第二行:单个整数表示d

输出

若干行:每行一个整数,表示满足要求的答案,若有多个数字满足要求,则以从小到大的顺序输出。

假设n=100 d=3 则答案是99

假设n=10 d=2 则答案是8 12

样例输入

11
2

样例输出

10
12

数据范围
  • 1≤n≤1,000,000,0001≤n≤1,000,000,000
  • 1≤d≤1,000,000,0001≤d≤1,000,000,000

代码如下:

#include<bits/stdc++.h>
using namespace std;
int main(){
	long long n,d;
	cin>>n>>d;
	if(n%d==0) cout<<n-d<<"\n"<<n+d;//排除特殊项
	else{
		int k=n/d;//样例分析:11/2=5
		int a1=k*d;//样例分析:5*2=10
		int a2=a1+d;//样例分析:10+2=12
		if(a2-n<n-a1) cout<<a2;
		else if(a2-n>n-a1) cout<<a1;
		else cout<<a1<<"\n"<<a2;
	}
	return 0;
}
  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值