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 \bmod 3=0 $ ;$c1=i$ 且 $c2=i$ .
  2. 当 $ N \bmod 3=1 $ ; $c1=i+1$ 且 $c2=i$ .
  3. 当 $ N \bmod 3=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日
许可协议