POJ 2897 Dramatic Multiplications(简单模拟)
2015-10-04 11:41
323 查看
Description
给出两个小于10的整数n和k,问是否存在一类数满足最低位是k,且该数乘n后k变成最高位且其余为均右移一位,例如,n=4,k=4时,4*102564=410256,410256就是一个满足条件的数。如果存在这类数输出最小的一个,不存在则输出0
Input
第一行为一整数T表示用例组数,每组用例占一行包括两个整数n和k(1<=n,k<=9)
Output
对于每组用例,如果对于给出的n和k有满足条件的数则输出最小的一个,不存在就输出0
Sample Input
2
4 5
2 1
Sample Output
128205
0
Solution
简单模拟,就是开一个数组记录这个数,最低位设成k,不断对最高位乘n(模拟对整个数乘n的过程),直到最高位变成k为止,此时判断次高位是否为0,为0则不满足条件,不为0则说明满足条件,输出即可
Code
给出两个小于10的整数n和k,问是否存在一类数满足最低位是k,且该数乘n后k变成最高位且其余为均右移一位,例如,n=4,k=4时,4*102564=410256,410256就是一个满足条件的数。如果存在这类数输出最小的一个,不存在则输出0
Input
第一行为一整数T表示用例组数,每组用例占一行包括两个整数n和k(1<=n,k<=9)
Output
对于每组用例,如果对于给出的n和k有满足条件的数则输出最小的一个,不存在就输出0
Sample Input
2
4 5
2 1
Sample Output
128205
0
Solution
简单模拟,就是开一个数组记录这个数,最低位设成k,不断对最高位乘n(模拟对整个数乘n的过程),直到最高位变成k为止,此时判断次高位是否为0,为0则不满足条件,不为0则说明满足条件,输出即可
Code
#include<stdio.h> int main() { int t,n,k,num[111],cnt,res; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); num[0]=k; res=cnt=0; while(1) { num[++cnt]=(num[cnt-1]*n+res)%10; res=(num[cnt-1]*n+res)/10; if(num[cnt]==k&&res==0) break; } if(num[cnt-1]==0)printf("0\n"); else { for(int i=cnt-1;i>=0;i--) printf("%d",num[i]); printf("\n"); } } return 0; }
相关文章推荐
- UML ,类的关系解析
- Linq多表合一查询
- codeforces round#323(div2 D)(思路)
- 关于*大学计算机科学与技术学院的大一学生几个关于Linux学习方面的疑惑之回复
- 解决PHP move_uploaded_file函数移动图片失败
- Substring with Concatenation of All Words字符串中找到包含所有单词的子串
- Set集合实现元素不重复原理
- DirectX11 裁剪像素
- 杭电OJ -- 2034 人见人爱A-B(c++练手的好题目)
- android studio安装中遇到的问题(ubuntu)
- symfony报错:Declaration of testAction::execute() must be compatible with sfComponent::execute($request
- 110. Balanced Binary Tree (Tree; DFS)
- 成员变量、类变量、局部变量的区别
- ios9 [app setStatusBarHidden:NO] is deprecated
- 两个栈实现队列
- 信息安全系统设计基础第三周学习总结
- 信息的表示和处理
- hdu 4513 吉哥系列故事——完美队形II(manacher)
- UVA 571 Jugs ADD18 小白书10 数学Part1 专题
- 104. Maximum Depth of Binary Tree (Tree; DFS)