【2016-2017NEERC- gym101142-J. Java2016】构造

Java2016

题目链接:

https://codeforc.es/gym/101142

Description

在这里插入图片描述

Input

在这里插入图片描述

Output

在这里插入图片描述

Sample Input

1

Sample Output

a = ? max ?
(a max a) / a

题意

定义?是一个0~255的随机数。

现在用? + - * / min max 来表达一个数值,使这个数值等于c的概率大于1/2

题解

这种题大概都要用样例给的信息来搞事情,首先要凑成一个数,最先想到的就是二进制,那么也就是我们如果能得到一个准确率特别高的2,问题就解决了,那么也就是我们如果能得到一个准确率特别高的1,问题就解决了。

样例中给出了一个准确率大概为50%的1。

我们发现样例中先是对两个?取max得到a,并且对两个a取max再/a得到1。

也就是说上述过程得到的a很容易相同。

那么如果我们不去/a,而是通过 b = a   m a x   a b= a \ max \ a 的方式,得到一个稳定度更高的b,这里稳定度更高的意思是等于一个数的概率更大,不论这个数是多少。

那么我们就可以不断对之前的得到的值取max来使当前这个随机值更稳定,直到我们用尽能用的字符,得到一个最稳定的值(X) ,那么1就等于 ,max(X,X)/X,这样我们就得到了准确率很高的1(经测试,准确率可以达到100%)。之后我们用类似快速幂的思想去得到2,4,8,16,32,64,128,之后对于给定的值,拆位相加即可。

代码

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<math.h>
using namespace std;
#define dbg(x) cout<<#x<<" = "<<x<<endl
#define dbg2(x,x2) cout<<#x<<" = "<<x<<" "<<#x2<<" = "<<x2<<endl
#define dbg3(x,x2,x3) cout<<#x<<" = "<<x<<" "<<#x2<<" = "<<x2<<" "<<#x3<<" = "<<x3<<endl
const int maxn =2e5+10;
const int INF = 0x3f3f3f3f;
string str[20];
string num[100];
int main()
{
    freopen("java2016.in","r",stdin);
    freopen("java2016.out","w",stdout);
    int x;
    scanf("%d",&x);
    str[0]="?/?/?";
    str[1]="a = ? max ?";
    if(x==0)
    {
        cout<<str[0]<<endl;
        return 0;
    }
    if(x==1)
    {
        cout<<"a = ? max ?"<<endl;
        cout<<"(a max a) / a"<<endl;
        return 0;
    }
    cout<<str[1]<<endl;
    for(int i=1;i<=17;i++)
    {
        printf("%c = %c max %c\n",char('a'+i),char('a'+i-1),char('a'+i-1));
    }
    cout<<"s = r / r"<<endl;


    num[1]="t = s + s";
    num[2]="u = t * t";
    num[3]="v = u * t";
    num[4]="w = v * t";
    num[5]="x = w * t";
    num[6]="y = x * t";
    num[7]="z = y * t";

    for(int i=1;i<8;i++) cout<<num[i]<<endl;
    int flag=0;
    for(int i=0;i<8;i++)
    {
        if(x&(1<<i))
        {
            if(flag==0) cout<<char(i+'s');
            else cout<<" + "<<char(i+'s');
            flag=1;
        }
    }
    return 0;
}
发布了299 篇原创文章 · 获赞 117 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_38891827/article/details/101547685