CF1679A 题解

Jerrlee✅

2022-05-16 20:04:43

Solution

## 题意 你有一些公交车,可以是 $4$ 轮的,也可以是 $6$ 轮的。现在给你轮子总数,求车辆数量可能的最小值和最大值。 ## 思路 首先,如果车轮数为奇数,肯定拼会多出至少一个轮子,否则一定可以拼出来。 但当 $n$ 小于 $4$ 时,肯定一辆车也拼不出来。 然后其余情况分类讨论即可。 1. 求最小值,要使车尽量为 $6$ 轮,否则再拆开六轮的车拼出四轮($n$ 除以 $6$ 余 $2$ 时,拆开一辆六轮车,组成两个 $4$ 轮的,余 $4$ 时可以直接拼出一个 $4$ 轮车); 2. 求最大值,要使车尽量为 $4$ 轮,否则再拆开四轮的车拼出六轮($n$ 除以 $4$ 余 $2$ 时,拆开一辆四轮车,组成一辆 $6$ 轮车)。 记得开 `long long`。 ## 代码 ```cpp #include<iostream> using namespace std; int main(){ int t; cin>>t; while(t--){ long long n; cin>>n; if(n==4){cout<<"1 1\n";continue;} if(n==6){cout<<"1 1\n";continue;} if(n<4||n%2!=0){cout<<"-1\n";continue;} if(n%6==0) cout<<n/6<<" "; else if(n%6==2) cout<<(n-2)/6+1<<" "; else cout<<(n-4)/6+1<<" "; if(n%4==0) cout<<n/4<<endl; else cout<<(n-2)/4<<endl; } } ``` [AC 记录(洛谷)](https://www.luogu.com.cn/record/75776852) [AC 记录(CF)](https://codeforces.com/contest/1679/submission/157252959)