P9913 「RiOI-03」water problem-----说难不难,说简单不简单

# 「RiOI-03」water problem

## 题目背景

这题跟小 H 没有关系,但是昨天是小 H 的生日捏。

## 题目描述

给定一个正整数 $n$,问一个正方形能否被分割为 $n$ 个小正方形(**不要求大小相等**),输出 `Yes` 或 `No`。多组数据。

分割的不严格定义可以理解为切一刀。但是切出的这一刀必须是线段,且其端点必须在正方形的边界上或先前切出的线段上。

## 输入格式

第一行一个正整数 $T$。

对于每组数据,一行一个正整数 $n$。

## 输出格式

对于每组数据,分别一行一个字符串,`Yes` 或 `No` 表示方案的存在与否。

## 样例 #1

### 样例输入 #1

```
3
4
3
256
```

### 样例输出 #1

```
Yes
No
Yes
```

## 提示

### 样例解释 1

显然,正方形无法分割为 $3$ 个小正方形;\
由于 4 = 2^2,256 = 16^2,则它们均能被分割成若干个全等的小正方形。

### 数据规模与约定

+ Subtask 0(10 pts):$n$ 是偶数。
+ Subtask 1(35 pts):$n <8

+ Subtask 2(55 pts):无特殊限制。

对于所有数据,1

       现在我们开始讲解这道题,首先当我们看到题目的时候water problem----顾名思义水题(在本蒟蒻看来还是有一定难度的,存在思维的转换)。我们从题目得知,这个题问的就是一个正方形可以分成多少个小正方形(大小可以不同)。首先我们思考一个大正方形是不是可以分成四个小正方形,那我们接着把其中一个小正方形看做大正方形,此时是不是就可以在分成四个小正方形,如此循环,那么我们是否可以得出一个表达式正方形的个数:1+3*n,这就是第一步。

        但仅凭第一步能解开此题吗?当然不行,我们可以知道任何一个数的平方都可以变成大正方形,那么3^2=9,一个大正方形是不是也可以分成九个小正方形,就是这样,九个正方形大小相等,那么,我们是不是就可以将其中四个相接的正方形,看作一个大正方形,此时就变成了七个正方形,而这七个正方形,不可以再减了,此时我们同第一步的思想,也得到一个表达式:6+3*n,这就是第二步。

接着我们该进行第三步,用完3的平方,我们接着用四的平方,就是这样的,那么我们是否也可以进行合成呢?当然可以,把其中一个九个相接的小正方形合成一个大正方形。那么此时就只有八个正方形(各位自己思考一下),接着我们就可以在得出一个表达式:8+3*n,第三步。

最后一步,我们得到了三个式子,可以发现二三两式是有关联的,那第一个式子呢?我们可以把第一个式子转换一下7+3*n.。这是我们发现三个式子都有关联,且都相差1,并且最重要的是其都是3*n,那么就可以表示从6以后的数字个数的小正方形都可以由一个大正形得到,而6之前的只有1和2可以由大正方形得到,那么此题就解出了最重要的点只有三个数字不行----2,3,5.其他数字都可以!代码太简单就不写了。。(判断一下就好了)

难点:或许我们第一次看到这题时都在找规律,不会动笔画一下,以为,会用什么算法,但事实上什么算法都没用。

简单:动笔一画,找出规律,敲代码不用三分钟就解决·了。

所以说要是一个题不会就拿笔画画,写写,就可能解出来了。

你可能感兴趣的:(数学建模)