Clarke and number 【sqrt精度+打表找规律】
2017-07-29 10:29
411 查看
基准时间限制:1 秒 空间限制:32768 KB 分值: 80
克拉克是一名人格分裂患者.某一天克拉克变成了一名数论研究者,在研究数字.
他想到了一个题:给定非负整数 x 和正整数 k ,可以做若干操作,每次操作是以下两种方法之一:
1. x=x−k
2. x=⌊x√⌋2
现在克拉克想知道,这个整数最少经过多少次操作可以变成 0 .
Input
第一行是一个正整数T(1≤T≤100),表示数据组数.
每组数据只有一行两个整数x, k(0≤x≤10^18, 1≤k≤2).
Output
每组数据输出一行一个整数,表示最少的操作数.若不存在方案,输出-1
Input示例
2
2 1
3 2
Output示例
2
-1
思路:打个表,规律就出来了,注意前几组特判;需要注意的就是,double只能针对1~1e16,sqrt是double型,写个二分代替开根号;
克拉克是一名人格分裂患者.某一天克拉克变成了一名数论研究者,在研究数字.
他想到了一个题:给定非负整数 x 和正整数 k ,可以做若干操作,每次操作是以下两种方法之一:
1. x=x−k
2. x=⌊x√⌋2
现在克拉克想知道,这个整数最少经过多少次操作可以变成 0 .
Input
第一行是一个正整数T(1≤T≤100),表示数据组数.
每组数据只有一行两个整数x, k(0≤x≤10^18, 1≤k≤2).
Output
每组数据输出一行一个整数,表示最少的操作数.若不存在方案,输出-1
Input示例
2
2 1
3 2
Output示例
2
-1
思路:打个表,规律就出来了,注意前几组特判;需要注意的就是,double只能针对1~1e16,sqrt是double型,写个二分代替开根号;
#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; typedef long long LL; LL judge(LL x) //二分代表sqrt { LL l=-1,mid,r=1e10; while(r-l>1) { mid=(l+r)>>1; if(mid*mid>x) r=mid; else if(mid*mid<x) l=mid; else return mid; } return l; } int main() { LL n,k,t,ans1,ans2; scanf("%lld",&t); while(t--) { scanf("%lld %lld",&n,&k); if(n==0) //需要特判很多组,前几组较小值 { printf("0\n"); continue; } if(k==2 && n==1 || k==2 && n==3) { printf("-1\n"); continue; } if(k==n) { printf("1\n"); continue; } if(n==5 && k==2) { printf("3\n"); continue; } LL ans=judge(n); if(k==1) { if(ans*ans==n) printf("%lld\n",2*ans-1); else printf("%lld\n",2*ans); } else { LL cnt=judge(n-1); if(ans*ans==n || cnt*cnt==n-1) printf("%lld\n",2*ans-2); else printf("%lld\n",2*ans-1); } } return 0; }
相关文章推荐
- hdu6216 A Cubic number and A Cubic Number 打表找规律 + 二分
- hdu 6216 A Cubic number and A Cubic Number(打表找规律)
- 51nod 1859 Clarke and number 打表
- Soldier and Number Game---cf546D(打表求n的素因子个数)
- 杭电6216 (打表+二分)之 A Cubic number and A Cubic Number
- ACdream 1115 Salmon And Cat (找规律&&打表)
- HDU-6198 number number number(打表找规律、矩阵快速幂)
- HDU 6216 A Cubic number and A Cubic Number 公式/打表 [2017 ACM/ICPC Asia Regional Qingdao Online]
- hdu4279-欧拉函数+约数个数+打表+sqrt()精度问题
- 2016 大连 K Guess the number HDU 5981 DP 打表找规律
- 【2016杭电女生赛1007】【博弈 打表找规律】Alice and Bob 可走k步斜对角线的胜负态
- HDU 6063 RXD and math 打表找规律 快速幂
- hdu5563 Clarke and five-pointed star(判正五边形,精度问题)
- Number Sequence 【打表】+【找规律】
- 51nod 1859 Clarke and number ACM
- 【数论 && 概率论 && 打表找规律】HihoCoder - 1432 JiLi Number
- Clarke and number
- 51Nod-1859-Clarke and number
- HDU 5810 Balls and Boxes(打表找规律)——2016 Multi-University Training Contest 7 1002
- ACdream 1115 Salmon And Cat (找规律&&打表)