2193 So Hard
题意:
化简小数。
思路:
最多不超过9位,那么乘以10^9就好了。
然后注意的就是加一下精度。
代码:
#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"iostream"#include"map"#define ll __int64#define eps 1e-11using namespace std;ll gcd(ll a,ll b){return b==0?a:gcd(b,a%b);}int main(){int t;cin>>t;while(t–){double x;scanf("%lf",&x);ll fz=(ll)((x+eps)*1000000000);ll fm=1000000000;ll tep=gcd(fz,fm);printf("%I64d/%I64d\n",fz/tep,fm/tep);}return 0;}
2191 完美的数字
题意:
[a,b]区间内每个数的完美度的和。
所谓完美度就是X能够分解成多少个A*A*B(0<A<=B)的个数。
思路:
对于[1,x]区间内。
我们枚举A。
因为A<=B 对于每个i,所以若要成立,最小的数是i*i*i
然而我们只要判断i*i*i<=x 的范围内,包含多少个i*i。
对于每个i*i-i+1。
然后相减一下。
代码:
#include"cstdlib"#include"cstdio"#include"cstring"#include"cmath"#include"queue"#include"algorithm"#include"iostream"#include"map"#define ll __int64#define eps 1e-11using namespace std;int main(){ll x,y;while(scanf("%I64d%I64d",&x,&y)!=-1){ll ansx=0,ansy=0;x–;for(ll i=1;i*i*i<=x;i++) ansx+=x/(i*i)-i+1;for(ll i=1;i*i*i<=y;i++) ansy+=y/(i*i)-i+1;printf("%I64d\n",ansy-ansx);}return 0;}
,走一个地方停一个地方。在我心里最美好的就是和你一起老在路上,