FZU2125 简单的等式(枚举)
2015-08-08 17:32
351 查看
现在有一个等式如下:x^2+s(x,m)x-n=0。其中s(x,m)表示把x写成m进制时,每个位数相加的和。现在,在给定n,m的情况下,求出满足等式的最小的正整数x。如果不存在,请输出-1。
有T组测试数据。以下有T(T<=100)行,每行代表一组测试数据。每个测试数据有n(1<=n<=10^18),m(2<=m<=16)。
输出T行,有1个数字,满足等式的最小的正整数x。如果不存在,请输出-1。
Input
有T组测试数据。以下有T(T<=100)行,每行代表一组测试数据。每个测试数据有n(1<=n<=10^18),m(2<=m<=16)。
Output
输出T行,有1个数字,满足等式的最小的正整数x。如果不存在,请输出-1。
Sample Input
4 4 10 110 10 15 2 432 13
Sample Output
-1 10 3 18 这个题比较水。。不过暴力枚举的时候注意一个跳出条件,就是s(x,m)是有一个范围的。。#include <stdio.h> #include <string.h> #include <math.h> int main() { long long t,n,m,ans; scanf("%I64d",&t); while(t--) { scanf("%I64d%I64d",&n,&m); long long x = sqrt(n*1.0); ans = -1; while(x) { if(n%x==0) { long long sum = 0,tem = x; while(tem) { sum+=tem%m; tem/=m; } if(sum == n/x-x) { ans = x; } } if(n/x-x>90) break; x--; } printf("%I64d\n",ans); } return 0; }
相关文章推荐
- 利用Java反射机制和泛型,全自动解析json
- UVA 10066 -The Twin Towers(最长公共子序列)
- [leetcode 235]Lowest Common Ancestor of a Binary Search Tree
- 欢迎使用CSDN-markdown编辑器
- [leedcode 233] Number of Digit One
- viewpager同时实现自动切换和手动切换
- js判断输入的年月日是一年中的第几天
- 上传图片的方法以及判断
- PageRank及其MapReduce实现
- Mac OS X 10.10中配置Apache + PHP
- django操作mysql时django.db.utils.OperationalError: (2003, "Can't connect to MySQL server")错误的解决办法
- 【codevs1068】乌龟棋noip10年TG----第二个A掉的钻石题
- oracle12创建用户错误ORA-65096: 公用用户名或角色名无效 invalid common user or role name
- 括号配对
- C++设计模式——原型模式
- PhotoShop 图章工具的简单使用
- checkbox的全选与反选
- 阿拉卡拉卡韩国
- A. Toy Cars
- Top 3000+ Python Modules