#5. Guess Date

Posted may-2nd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#5. Guess Date相关的知识,希望对你有一定的参考价值。

题面

我做的第一道交互题。

(44pts:)输出(0)

(100pts:)

第一个包:解一元二次方程,公式法。

#include<bits/stdc++.h>
using namespace std;
#define Db double
int main()
{
    Db a,b,c,var,x1,x2;
    cin>>a>>b>>c;
    var=b*b-4*a*c;
    if(var<0)cout<<"No",exit(0);
    x1=(-b+sqrt(var))/2.0/a;
    if(!var)cout<<"Only ";
    cout<<fixed<<setprecision(6)<<x1;
    x2=(-b-sqrt(var))/2.0/a;
    if(var)cout<<' '<<x2;
    return 0;
}

第二个包:枚举(+)快速幂。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define Mod1 911
#define Mod2 1248679
#define For(i,x,y)for(i=x;i<=y;i++)
ll ksm(ll x,ll y)
{
    if(!y)return 1;
    x%=Mod1;
    return(y&1?x:1)*ksm(x*x,y>>1)%Mod1;
}
int main()
{
    ll x;
    For(x,1,20021231)
    if(ksm(x,x)+(x^(x%Mod2))==20000000)break;
    cout<<x;
    return 0;
}

第三个包:考虑化简前面的式子。

(|2e9-max(|x-1e9|,|x-2e9|,|x-3e9|)|leq10)

(-10leq2e9-max(|x-1e9,|x-2e9|,|x-3e9|)leq10)

(-10-2e9leq-max(|x-1e9|,|x-2e9|,|x-3e9|)leq10-2e9)

(2e9+10geq max(|x-1e9|,|x-2e9|,|x-3e9|)geq2e9-10)

(2e9+10geq max(|x-1e9|,|x-3e9|)geq2e9-10)

(x>2e9:2e9+10geq x-1e9geq2e9-10)

(3e9+10geq xgeq3e9-10)

(xleq2e9:2e9+10geq3e9-xgeq2e9-10)

(-10-2e9leq x-3e9leq10-2e9)

(1e9-10leq xleq1e9+10)

(xleq1234567890)

(1e9-10leq xleq1e9+10)

(21)个数枚举即可。

#include<bits/stdc++.h>
using namespace std;
#define Db double
#define For(i,x,y)for(i=x;i<=y;i++)
const Db pi=3.141592653589793,eps=1e-8;
int main()
{
    int x;
    For(x,999999990,1000000010)
    if(fabs(sin(pi*(Db(x)+25.0)/32.0))<=eps)break;
    cout<<x;
    return 0;
}

第四个包:发现(n)是两个数的乘积,那么枚举到根号,一通(lowbit)操作,跑得蛮快。

(PS:lowbit)宏定义一定要加括号,(qwq)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define For(i,x,y)for(i=x;i<=y;i++)
#define lowbit(x)(x&-x)
ll n=1463030063184;
bool pd(ll x)
{
    return x*(lowbit(x)+lowbit((x-lowbit(x))))==n;
}
int main()
{
    ll m,i,x;
    m=int(sqrt(n));
    For(i,1,m)
    {
        x=i;
        if(pd(x))break;
        x=n/i;
        if(pd(x))break;
    }
    cout<<x;
    return 0;
}

第五个包:???出题人怀疑我没有电脑???直接放进程序里算啊。。。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll x=1;
    cout<<not not not not not not not not x and not (((x + (x ^ 998244353) + (((((x + 123) % 456 * 789) ^ 987) - x * 654) ^ (321 * (x % 2))) - (987654321 ^ ((x * x) >> 1)) - (12344321 * x * x * x) - ((1234321 - x) ^ (123454321 >> 2) / (x - 12321) - ((x + (x * x * x) ^ (x * x)) / (x + 123))) * x + 456789 / (x + 9) + 87654 + (32 << (x + 1))) >> 19) + 1);
    return 0;
}

结束了。

以上是关于#5. Guess Date的主要内容,如果未能解决你的问题,请参考以下文章

bootspring???????????????Date??????????????????????????????????????????????????????????????????(代码片段

带有神秘附加字符的 Javascript Date getTime() 代码片段

java 反射代码片段

shell 脚本 片段

js常用代码片段(更新中)

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段