简单的等式
2016-04-02 09:15
417 查看
E - 简单的等式
Crawling in process...
Crawling failed
Time Limit:1000MS
Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit
Status
Practice
FZU 2125
Description
现在有一个等式如下:x^2+s(x,m)x-n=0。其中s(x,m)表示把x写成m进制时,每个位数相加的和。现在,在给定n,m的情况下,求出满足等式的最小的正整数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
Crawling in process...
Crawling failed
Time Limit:1000MS
Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Submit
Status
Practice
FZU 2125
Description
现在有一个等式如下:x^2+s(x,m)x-n=0。其中s(x,m)表示把x写成m进制时,每个位数相加的和。现在,在给定n,m的情况下,求出满足等式的最小的正整数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
#include<stdio.h> #include<math.h> int main() { int t,i; long long int n,m; scanf("%d",&t); while(t--) { scanf("%I64d %I64d",&n,&m); long long int v=-1; for(i=1; i<100; i++)//进制转换各位的和为1~100; { int sum=0; long long int x=sqrt(n*4+i*i)/2-i/2;//求根公式 long long int p=x; while(p)//进制转换 { sum+=p%m; p=p/m; } if(x*x+sum*x==n)//验证是不是符合公式 { v=x; break; } } printf("%I64d\n",v); } }
相关文章推荐
- Linux_Shell初级编程入门
- 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(4月2日)
- Python通讯录小程序
- IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2)——A - Bear and Three Balls(unique函数的使用)
- (OK) server-client-pthread-c language
- 团队作业一
- to do list
- 编程异常——假设你报createSQLQuery is not valid without active transaction,...
- 转载自笨木头的Cocos2d-x Auto-batching分析
- 1251: 统计字母个数
- PHP使用http_build_query()构造URL字符串的方法
- 编译CDH的spark1.5.2
- 编译CDH的spark1.5.2
- JDBC-数据库事务回滚
- 扣丁学堂笔记第18天HttpURLConnection与HttpClient
- javascript 中的面向对像(一)
- JDBC-数据库的连接和简单操作
- 山东省第一届ACM习题
- (OK) Linux epoll模型—socket epoll server client chat—pthread
- Linux学习心得