本文主要是介绍上海计算机学会 2024年3月月赛 丙组T1 最近的数字(数学),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
第一题:T1最近的数字
标签:数学
题意:给定两个正整数 n n n与 d d d,请找到所有最接近 n n n且是 d d d的倍数的整数。如果有多个数字满足要求,从小到大输出。数据范围: 1 ≤ n , d ≤ 1 , 000 , 000 , 000 1≤n,d≤1,000,000,000 1≤n,d≤1,000,000,000
题解:通过 ( n / d ) ∗ d (n/d)*d (n/d)∗d得到小于等于 n n n,最接近 n n n的数(且是 d d d的倍数),通过 ( n / d + 1 ) ∗ d (n/d+1)*d (n/d+1)∗d得到大于 n n n,最接近 n n n的数(且是 d d d的倍数)。两者比较一下,按题目要求输出即可。
代码:
#include <bits/stdc++.h>
using namespace std;typedef long long ll;int main() {ll n, d;cin >> n >> d;ll a = (n / d) * d; // 小于等于n最接近n的数ll b = (n / d + 1) * d; // 大于n最接近n的数if (abs(a - n) < abs(b - n)) cout << a;else if (abs(a - n) > abs(b - n)) cout << b;else cout << a << endl << b;return 0;
}
这篇关于上海计算机学会 2024年3月月赛 丙组T1 最近的数字(数学)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!