「RiOI-03」water problem 题解

· · 题解

假设一个正方形能被分成 n 份,则在这个正方形外面拼上 3 个大小相同的正方形,得到一个大正方形,这个大正方形中一共有 n+3 个小正方形,故一个正方形也能被分成 n+3 份。

而我们知道一个正方形可以被分成 1,4,6,7,8 份。

所以一个正方形也能被分成 6+3=9 份,7+3=10 份,8+3=11 份,9+3=12 份,以此类推。所以只要 n\ge6,一个正方形就必然能被分成 n 块。

因此,只要 n\ge6,直接输出 Yes,如果 n=14,也输出 Yes,否则输出 No。别忘了输出要换行。

C++ 赛时代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
    ios::sync_with_stdio(false);
    int t;cin>>t;
    while(t--){
        int n;cin>>n;
        if(n>=6)cout<<"Yes\n";
        else if(n==1||n==4)cout<<"Yes\n";
        else cout<<"No\n";
    } 
    return 0;
}