做题打卡第35天

张三试图用一张长h,宽w的贺卡为他的n位朋友剪出至少n张整数边长的贺卡,每刀只能将贺卡平均分成两半。题目描述了输入输出格式,并附带了一个链接到原题。虽然遇到困难,但通过理解思路发现解题关键在于计算长和宽能被2除的次数之和k,答案为2的k次方。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第32,33,34天放鸽子了
难题啥也没做
就复习来着
要不就出去玩/doge
今天晚上刚打完的比赛
分享一下做的题
春节快到了,张三决定剪n张贺卡给他的n个朋友,每人一张。他有一张长为h,宽为w的大贺卡。张三一刀可以且只可以把贺卡剪成平均的两半:要求全程所有贺卡的长宽均为整数。现在给你这张长为h,宽为w的大贺卡,要求剪出至少等于n张的长宽均为整数的贺卡,问能否实现。
Input
第一行包含一个整数t(1≤t≤10^4)——表示t组样例。 每个样例包含三个整数w, h, n(1≤w,h≤104,1≤n≤109)——贺卡的长宽以及朋友的个数。
Output
能满足条件输出:“YES”,否则输出“NO”。 您也可以输出“YES”和“NO”的大小写形式(例如,“yEs”,“yes”也被认为是正确的)。
原题链接:https://codeforces.com/problemset/problem/1472/A
这道题做了好长时间也没做出来
(惨)
这道题的思路是:偶数能x2,奇数就停止,分别去求长和宽能被2除几次,记和为k,答案就是2的k次方。、
所以我看了思路之后的答案:

#include <bits/stdc++.h>
using namespace std;
int main() {
	int t;
	cin >> t;
	while (t--) {
		int a, b, n;
		int a1 = 0, b1 = 0;
		int ans;
		cin >> a >> b;
		cin >> n;
		while (a % 2 == 0) {
			a1++;
			a = a / 2;
		}
		while (b % 2 == 0) {
			b1++;
			b = b / 2;
		}
		ans = pow(2, a1 + b1);
		if (ans >= n)
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值