CF1679A 题解

· · 题解

题意

你有一些公交车,可以是 4 轮的,也可以是 6 轮的。现在给你轮子总数,求车辆数量可能的最小值和最大值。

思路

首先,如果车轮数为奇数,肯定拼会多出至少一个轮子,否则一定可以拼出来。

但当 n 小于 4 时,肯定一辆车也拼不出来。

然后其余情况分类讨论即可。

  1. 求最小值,要使车尽量为 6 轮,否则再拆开六轮的车拼出四轮(n 除以 62 时,拆开一辆六轮车,组成两个 4 轮的,余 4 时可以直接拼出一个 4 轮车);

  2. 求最大值,要使车尽量为 4 轮,否则再拆开四轮的车拼出六轮(n 除以 42 时,拆开一辆四轮车,组成一辆 6 轮车)。

记得开 long long

代码

#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 记录(洛谷)

AC 记录(CF)