NC21374. 牛牛的表达式
描述
输入描述
输入一行包括三个整数a,b,c (1 ≤ a,b,c ≤ 109)
输出描述
输出一个整数
示例1
输入:
19 28 522
输出:
2
示例2
输入:
10 30 500
输出:
11
示例3
输入:
11111 11111 123454321
输出:
0
示例4
输入:
1000 100 10
输出:
1089
示例5
输入:
399 522 199999
输出:
24
C++11(clang++ 3.9) 解法, 执行用时: 140ms, 内存消耗: 500K, 提交时间: 2020-07-20 15:54:00
#include<bits/stdc++.h> using namespace std; int a,b,c; long long ans,temp; int main() { cin>>a>>b>>c; ans=INT_MAX; for(int C=max(0,c-500);C<=c+500;C++) { for(int A=1;A*A<=C;A++) { if(C%A==0) { temp=abs(A-a)+abs(C/A-b)+abs(C-c); ans=min(ans,temp); temp=abs(C/A-a)+abs(A-b)+abs(C-c); ans=min(ans,temp); } } } cout<<ans; return 0; }
C++(g++ 7.5.0) 解法, 执行用时: 235ms, 内存消耗: 496K, 提交时间: 2023-06-02 16:02:27
#include <iostream> #include <algorithm> typedef long long ll; using namespace std; #define N 0x3f3f3f3f3f ll a,b,c,A,B,C,ans=N; int main(){ cin>>a>>b>>c; for(C=c-300;C<=c+300;C++) { for(A=1;A*A<=C;A++) { if(C%A==0){ ans=min(ans,abs(A-a)+abs(C/A-b)+abs(C-c)); ans=min(ans,abs(C/A-a)+abs(A-b)+abs(C-c)); } } } cout<<ans; return 0; }