2017 4 15南海中學創新班

2021-07-30 14:33:37 字數 1776 閱讀 9563

關於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()

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

2017 4 15模擬賽總結

8 40來到機房,開電腦,心情糟透。實際上8 50才開始看題。t1什麼神奇數列,有點懵 t2不就縮點dfs,想都沒想就跳了 t3數四邊形,題意十分糾結 t4看了一眼沒去想,mst隨便做做 回過頭看t1,發現第一次看題漏看了乙個條件,此時已經9 20,趕快開打。9 30打完t1,手出幾個資料,沒有拍,...

2023年南海初中 取數

深度優先搜尋 一些剪枝,正解 記憶化搜尋。詳見 include include define max a,b a b?a b define file x freopen x in r stdin freopen x out w stdout using namespace std const int...

2017 4 15第六次測試總結

100分 ac第一題,後兩題直接崩掉233 第一題是高精度的運用,直接乙個高精度乘法 減法就過了,應為資料範圍很小。第二,三題dp,不會 附錄.題目 oj沒有 1 減法 calc.c cpp pas 記憶體 128mb 時限 1s 題目大意 給出a 和 b,輸出 a b b a 輸入資料 第一行兩個...