瓷片相关的题好像都是类似递推,有自己的规律公式,多推导一下
Theatre Square
Theatre Square in the capital city of Berland has a rectangular shape with the size n × m meters. On the occasion of the city's anniversary, a decision was taken to pave the Square with square granite flagstones. Each flagstone is of the size a × a.
What is the least number of flagstones needed to pave the Square? It's allowed to cover the surface larger than the Theatre Square, but the Square has to be covered. It's not allowed to break the flagstones. The sides of flagstones should be parallel to the sides of the Square.
Input
The input contains three positive integer numbers in the first line: n, m and a (1 ≤ n, m, a ≤ 109).
Output
Write the needed number of flagstones.
Examples
Input
6 6 4
Output
4
注意:这个运行之后显示time limit,还没找到问题
//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//#include<cstdio>
//#include<queue>
//#include<stack>
//#include<set>
//#include<vector>
//using namespace std;
//int main(){
// int num1,num2,num3;
// while(cin >> num1 >> num2 >> num3,num1||num2||num3){
// int ans1,ans2;
// ans1 = num1/num3;
// ans2 = num2/num3;
// if(num1%num3 != 0){
// ans1++;
// }
// if(num2%num3 != 0){
// ans2++;
// }
// cout << (long long)(ans1*ans2) << endl;
// }
// return 0;
//}
Brave Game
十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫《勇敢者的游戏》(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻。
今天,大家选择上机考试,就是一种勇敢(brave)的选择;这个短学期,我们讲的是博弈(game)专题;所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因。
当然,除了“勇敢”,我还希望看到“诚信”,无论考试成绩如何,希望看到的都是一个真实的结果,我也相信大家一定能做到的~
各位勇敢者要玩的第一个游戏是什么呢?很简单,它是这样定义的:
1、 本游戏是一个二人游戏;
2、 有一堆石子一共有n个;
3、 两人轮流进行;
4、 每走一步可以取走1…m个石子;
5、 最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。
Input
输入数据首先包含一个正整数C(C<=100),表示有C组测试数据。
每组测试数据占一行,包含两个整数n和m(1<=n,m<=1000),n和m的含义见题目描述。
Output
如果先走的人能赢,请输出“first”,否则请输出“second”,每个实例的输出占一行。
Sample Input
2
23 2
4 3
Sample Output
first
second
//#include<iostream>
//#include<algorithm>
//#include<string>
//#include<string.h>
//#include<cstdio>
//#include<queue>
//#include<stack>
//#include<set>
//#include<vector>
//using namespace std;
///*该题目中提到没人遵循的最优策略,是指不能让对方下次一次拿完的最优策略,不是两个人都拿最多的m个
//如,10 4这组数,f先拿4个,此时s不是拿4个(这样的话f下次拿走完就赢了,不是最优),而是拿1个(这样就剩5个,f下一次还是赢不了)
//s第一次拿1个剩5个,那f第二次不管拿多少剩下的都<= 4(如f拿1个剩下4个),s第二次都能拿完赢得比赛!
//n%(m+1) == 0可以理解为:如果你想赢得这场比赛,即先把石子取完。务必保证你自己最后一次取石子时,剩余的石子数小于等于M。
//所以倒数第二次你的的朋友取石子时务必保证,剩余的石子数为M+1,这样无论他取几个石子(1到M个),你都能在最后一次全部取完!
//即一旦第一个取石子时石子剩余数n满足n%(m + 1) == 0,你作为第二个取石子的人一定会取得胜利!
//*/
//int main(){
// int t = 0;
// cin >> t;
// while(t--){
// int n,m;
// cin >> n >> m;
// if(n%(m+1) == 0){
// printf("second\n");//满足就第二个人一定胜利
// }else{
// printf("first\n");
// }
// }
// return 0;
//}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。