2017.4.15南海中学创新班

关于2017.4.15的南海中学创新班上课内容,做以下浅淡的总结:
正方形square
题目描述
给一个N行N列的正方形格子,从中取出四格,要求将这四个格子的中心点链接起来,正好能形成一个正方形。比如N=3时,有6种方案。
问:有多少种方案?
输入格式 square.in
输入一个正整数N, 范围在[2,100]。
输出格式 square.out
一整数,方案数。
输入样例
4
输出样例
20
题目分析:
正方形格子的中心点个数就是他的小格子数,也就是n*n,通过发图发现,中心点连接的正方形有以下几种:1.正正方形,2.斜正方形,3.不规则斜正方形
画图分析得出:最小的正正方形有(n-1)的平方个,然后依次类推直到最大的,所以正正方形能用一个for循环算出。。。。。
接下来看题解

#include < iostream >
#include < cstdio >
#include < algorithm>
#include < cstring>
using namespace std;long long ans; //因为答案很大,所以要用long long来定义,答案最大值8332500
int n;int main()
{
scanf(“%d”,&n);//输入函数,把输入的数字赋值给变量n,&是取地址操作符,获取变量n的地址 //可直接cin>>n;
int x=1;
for (int i=2;i<=n;i++)
{ ans+=(n-i+1)*(n-i+1)*x;//把分析出的所有规律化简得出,注:不规则斜正方形规律为(n-1)个
x++;
}
printf(“%I64d”,ans); //输出函数 //可直接cin>>ans;
return 0;}

gamble
题目描述
猫老大和King是好朋友。King很喜欢赌博,这次King和老朋友猫老大多年不见,于是便邀请猫老大来玩一个游戏。King拿出了n块黄金(0 < n < 10^1000002),现在King和猫老大轮流从黄金中拿走一些,每人每次拿走的块数是2的次方(例如1,2,4,8,16…)谁能拿走最后一个黄金,谁就获胜,获胜者将获得所有黄金。现在King让猫老大先拿,双方都使用最好的策略来玩的话,谁能取得胜利呢。
输入格式 gamble.in
第一行一个整数T,表示一共进行了多少次赌博(1<=T<=10)
接下来T行,每行一个正整数N, 范围在[1, 10^1000002]。
输出格式 gamble.out
T行。每行一个正整数1或2。1表示猫老大赢,2表示King赢。
输入样例
2
6
8
输出样例
2
1

题目分析:显然2的次方与3互质。所有3的倍数不可能是2的次方。也就是说如果N是3的倍数(N%3=0),则先手无法取完,也无法取走3的倍数,所以取走后的新数N’必然不是3的倍数。而后手只需要取走N’%3就可以产生一个新数N”为3的倍数,让问题回到原点。最慢的情况,直到N等于3时,后手必胜。
同理,当N不是3的倍数(N%3!=0),先手只需要取走N%3,就可以保证最后的胜利。

题解:
#include< iostream>
#include< cstdio>
#include< string>
using namespace std;
int T;
string s;
int main()
{
freopen(“gamble.in”, “r”, stdin);
freopen(“gamble.out”, “w”, stdout);
cin>>T;
for(int i=1; i<=T; i++)
{
cin>>s;
int n=0;
for(int j=0; j

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值