CF1551A 题解

原题链接:https://www.luogu.com.cn/problem/CF1551A

题目大意

\(c1\)\(1\)元和\(c2\)\(2\)元凑成\(N\)元钱,并且使\(\mid c1-c2 \mid\)最小。

题目分析

结合样例数据我们可以发现 \(c1-c2\) 只有三种情况:\(0\)\(1\)\(−1\) 。我们可以将一个两元看成两个一元,试着将 \(N\) 平均分成三份,使 \(i=N \div 3\) .由于存在除不尽的情况,我们可以分成一下三种情况讨论:

  1. 当 $ N =0 $ ;\(c1=i\)\(c2=i\) .
  2. 当 $ N =1 $ ; \(c1=i+1\)\(c2=i\) .
  3. 当 $ N =1 $ ; \(c1=i\)\(c2=i+1\) .

参考代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <iomanip>
#include <vector>
#include <cctype>//isdigit
//#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int main() {
int n;
cin>>n;
while(n--){
int tot;
cin>>tot;
int i=tot/3;
if(tot%3==0){
cout<<i<<" "<<i<<endl;
}else if(tot%3==1){
cout<<i+1<<" "<<i<<endl;
}else{
cout<<i<<" "<<i+1<<endl;
}
}
return 0;
}

CF1551A 题解
https://www.jollyan.top/cf1551a-ti-jie/
作者
梦里徜徉
发布于
2021年7月25日
许可协议