D. 幻方
Description
大家都知道n阶奇数幻方吧?如下为一个5阶幻方:
现在,输入奇数n,n<1000000,输出该奇数幻方最右下角的元素值。
Input
一行一个数n。
Output
一行一个数,表示该奇数幻方右下角的值。
Samples
Input Copy
5
Output
9
结果可能比较大,爆掉long long
这个是个结论题,记得初一的时候数学老师讲过幻方的一些性质,这个题的答案是(n + 1) * (n - 2) / 2
Main_Code()
ll n = read; ll t1 = (n-2); ll t2 = n + 1; t2 /= 2; cout<<t2 * t1<<endl;
E. 求和
Description
小马克今年成为小学生。不久后她将进行她的第一次考试,其中包括数学考试。她非常认真地复习,她认为自己已经准备好了。她的哥哥通过给她提出问题并解决的方式帮助她。
他的问题是给定一连串整数:依次由1个1,2个2,3个 3 等组成,即1223334444……。现在他给马克两个整数A和B;他的任务是求出由第A个到第B个数的。如果A是1,B是3,答案为1+2+2=5。
给一个问题,然后计算它们的和,马克的哥哥能够验证答案正确与否。
Input
只有一行,包括正整数A和B,1≤A≤B≤1000
Output
共一行,为和的值。
Samples
Input Copy
1 3
Output
5
Input Copy
3 7
Output
15
看数据范围可以打表,然后求就完了
很简单的模拟
Main_Code()
ll aa[1007]; int main() { int a=read,b=read; ll ans = 0; int cnt = 0; int lim = 1; for(int i=1;i<=1000;i++){ cnt ++; aa[i] = lim; if(cnt == lim){ cnt = 0; lim ++; } } ///for(int i=1;i<=10;i++) cout<<aa[i]<<endl; for(int i=a;i<=b;i++) ans += aa[i]; cout<<ans<<endl; return 0; }
F. 猜歌名
Description
“Guess the song” 是一项在年轻程序员中非常流行的游戏。它是一种集技能、智慧、耐性于一体的游戏。这个游戏给玩游戏的人放音乐,游戏者的目标是尽可能快地猜这首歌的歌名。
Mirko可能不是一个很好的程序员,但他是一个世界级的猜歌者。Mirko总是在专辑里的某首歌播放出至少一半歌词的时候猜出歌名。所有歌名的单词是唯一的(没有一个单词会出现一次或更多次)。
写一个程序,给出歌名和专辑名,看看Mirko在这首歌的哪个点上(在多少个单词之后)猜出歌名。
Input
共两行:
第一行:包含一个整数N,1≤N≤50,它是一首歌里的单词数目。
接下来的N行每一行包含歌名的一个单词。
第N+2行:包含一个整数M,1≤M≤10000, 它是专辑里的单词数目。
接下来的M行每一行包含专辑里的一个单词 歌名和专辑里的所有单词由1到15个小写英文字母组成。
注:测试数据将会使得Mirko总能从专辑里猜出歌曲名。
Output
共一行,包含一个数,表示Mirko在第几个单词处猜出歌曲名。
Samples
Input Copy
3 sedam gladnih patuljaka 7 sedam dana sedam noci sedam gladnih godina
Output
6
Input Copy
4 moj bicikl mali crveni 11 ja vozim bicikl crvene boje ali je moj moj samo moj
Output
8
简单模拟,通过遍历下面的字符串,对上面的字符串进行标记,如果上面的字符串中超过一半被标记过,就可以直接输出当前遍历的字符串的下标
Main_Code()
int n,m; int lim; string a[55]; string b[10086]; int flag[55]; bool ck(){ int cnt = 0; for(int i=1;i<=n;i++) if(flag[i]) cnt ++; if(cnt * 2 >= n) return true; return false; } int main() { int pos = 0; n = read; if(n % 2) lim = n / 2 + 1; else lim = n / 2; for(int i=1;i<=n;i++) cin >> a[i]; m = read; for(int i=1;i<=m;i++) cin >> b[i]; for(int i=1;i<=m;i++){ string temp = b[i]; for(int j=1;j<=n;j++){ if(temp == a[j]){ flag[j] = 1; break; } } if(ck()){ pos = i; break; } } cout<<pos<<endl; return 0; }