light oj1116 - Ekka Dokka 【简单数学】
2015-12-03 17:59
459 查看
1116 - Ekka Dokka
Ekka and his friend Dokka decided to buy a cake. They both love cakes and that's why they want to share the cake after buying it. As the name suggested that Ekka is very fond of odd numbers and Dokka is very fond of even numbers, they want to divide the
cake such that Ekka gets a share of N square centimeters and Dokka gets a share of
M square centimeters where N is odd and
M is even. Both N and M are positive integers.
They want to divide the cake such that N * M = W, where
W is the dashing factor set by them. Now you know their dashing factor, you have to find whether they can buy the desired cake or not.
Each case contains an integer W (2 ≤ W < 263). And
W will not be a power of 2.
N and M. If there are multiple solutions, then print the result where
M is as small as possible.
![]() | PDF (English) | Statistics | Forum |
Time Limit: 2 second(s) | Memory Limit: 32 MB |
cake such that Ekka gets a share of N square centimeters and Dokka gets a share of
M square centimeters where N is odd and
M is even. Both N and M are positive integers.
They want to divide the cake such that N * M = W, where
W is the dashing factor set by them. Now you know their dashing factor, you have to find whether they can buy the desired cake or not.
Input
Input starts with an integer T (≤ 10000), denoting the number of test cases.Each case contains an integer W (2 ≤ W < 263). And
W will not be a power of 2.
Output
For each case, print the case number first. After that print "Impossible" if they can't buy their desired cake. If they can buy such a cake, you have to printN and M. If there are multiple solutions, then print the result where
M is as small as possible.
Sample Input | Output for Sample Input |
3 10 5 12 | Case 1: 5 2 Case 2: Impossible Case 3: 3 4 |
#include<cstring> #include<cstdio> #include<cmath> int main() { int T; scanf("%d",&T); for(int t = 1;t <= T;t++) { long long a, n, m; scanf("%lld", &a); if(a&1) printf("Case %d: Impossible\n",t); else { for(m = 2; m <= a; m++) { if(((a/m)&1) && a%m==0) { n = a/m; break; } } printf("Case %d: %lld %lld\n", t, n, m); } } return 0; }
相关文章推荐
- java跳出多重嵌套循环
- redmine与AD集成实现账号统一认证
- 关于编程自学的反思
- 加急审核
- 集成支付宝SDK流程
- java.io.IOException: 您的主机中的软件中止了一个已建立的连接
- jquery easyui关于datagrid新增一行 combobox 默认选中第一项问题
- 最长递增子序列和
- 我在PHP和MySQL开发中字符编码格问题
- [转]MySQL 清空慢查询文件
- C语言数据类型笔记 by STP
- 微信浏览器缓存问题的终极解决方案
- 前端解决跨域问题的8种方案
- 使用OpenSSL生成证书
- 怎样测量阴茎长度
- light oj 1078 - Integer Divisibility【同余定理】
- 反射(二)---newInstance、get\set、invoke
- Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
- 杭电1081 暴力dp 最大子矩阵和
- mysql 主重复制过程