B. Div Times Mod Round #528 (Div. 2)【简单数学】

一、题面

 题目链接

二、分析

一个简单的数学题目,这里首先要把x分解了看

$x = kd + c$

这样原问题中的n就变成了

$n = dc$

上面这个式子中,c因为是x除k取余得到的,那么可以肯定

$c < k$

有了这个式子,就可以直接暴力去试满足条件的c,并且最小的d就可以满足x的最小值。

三、AC代码

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 #define INF 1e6+4   
 5 
 6 int main()
 7 {
 8     int K, N;
 9     //freopen("input.txt", "r", stdin);
10     while(scanf("%d %d", &N, &K)!=EOF)
11     {
12         int d, ans = INF;
13         for(int c = 1; c < K; c++)
14         {
15             if(N%c == 0)
16             {
17                 d = N/c;
18                 ans = min(ans, d);
19             }
20         }
21         ans = ans*K + N/d;
22         printf("%d
", ans);
23     }
24     return 0;
25 }
View Code
原文地址:https://www.cnblogs.com/dybala21/p/10170845.html