關於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 輸入資料 第一行兩個...