CF1A——Theatre Square

这道题其实很简单,只需要分别对n/a和m/a向上取整即可。但是一开始我选择使用遍历法,最终没想到TLE了:

//CF1A题-version1-TLE
#include <iostream>
using namespace std;
int main()
{
	float n,m,a;	//这里为什么用float类型,是因为如果用int类型,for循环有问题 
	int b1,b2;	
	cin>>n>>m>>a;
	for (b1=1;b1<(n/a);b1++) {}	//这里的空语句还是需要的 
	for (b2=1;b2<(m/a);b2++) {}	
	cout<<(b1*b2);
	return 0;
} 

接着我又想到,为什么不能直接求呢!还要这么麻烦遍历干什么?所以我就把遍历给更换了...

//CF1A题-version2-WA
#include <iostream>
using namespace std;
int main()
{
	int n,m,a;
	int b1,b2;	
	cin>>n>>m>>a;
	if (n%a==0)	b1=n/a;
	if (n%a!=0)	b1=n/a+1;
	if (m%a==0)	b2=m/a;
	if (m%a!=0)	b2=m/a+1;
	cout<<(b1*b2);
	return 0;
} 

好吧,最后还是WA了...我百思不得其解,到底是哪里出了问题!直到看到WA的案例,我才知道可能是内存不够,所以最后WA了,然后赶忙换成了long long

//CF1A题-version3-UE
#include <iostream>
using namespace std;
int main()
{
	long long n,m,a,b1,b2;
	cin>>n>>m>>a;
	if (n%a==0)	b1=n/a;
	if (n%a!=0)	b1=(n-(n%a))/a+1;	//可以但是没必要 
	if (m%a==0)	b2=m/a;
	if (m%a!=0)	b2=(m-(m%a))/a+1;	 
	cout<<(b1*b2);
	return 0;
} 

UE...这个问题出现的我更加摸不着头脑了,既没有超限,也没有WA,那到底是哪里Error了呢!后来我仔细看了看,问题就出现在if (n%a!=0)    b1=(n-(n%a))/a+1;这一行,其实没必要去减掉这个余数然后做除法,毕竟是整型嘛,直接来!所以经历了千辛万苦,终于把这道很简单的题目给写好了!!AC了!!

//CF1A题-version4-AC
#include <iostream>
using namespace std;
int main()
{
	long long n,m,a,b1,b2;	//要定义成long long,本身就是整型 
	cin>>n>>m>>a;
	if (n%a==0)	b1=n/a;
	if (n%a!=0)	b1=n/a+1;
	if (m%a==0)	b2=m/a;
	if (m%a!=0)	b2=m/a+1;
	cout<<(b1*b2);
	return 0;
} 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张钰枫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值