Jerrlee's blog

Jerrlee's blog

(2Y /-\|< |0|!

CF1679A 题解

posted on 2022-05-16 20:04:43 | under 题解 |

题意

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

思路

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

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

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

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

  2. 求最大值,要使车尽量为 $4$ 轮,否则再拆开四轮的车拼出六轮($n$ 除以 $4$ 余 $2$ 时,拆开一辆四轮车,组成一辆 $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)