P12528 [XJTUPC 2025] 量子力学题解

· · 题解

阅读理解题。

题目描述

有一个随机变量 x,给出其二进制下位数 n,然后给出 2^n 个二元组 (a,b),其中第 k 个二元组表示 x(a+bi)\cdot(a-bi) 的概率等于 k-1,其中 i 为虚数。

x 的二进制每一位是 01 的概率。

思路

读懂了题目这题就没有任何难度了。运用小学二年级就学过的平方差公式和虚数相关知识可以得到:

(a+bi)\cdot(a-bi)=a^2-b^2i^2\\ =a^2+b^2

然后二进制分解 k 的每一位,如果当前位置为 1 那么答案加上对应的概率即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long
#define dd double
int n;
dd ans[1ll<<9],a,b;
int main() {
    cin>>n;
    for(int p=0;p<(1ll<<n);p++){
        cin>>a>>b;
        a=a*a+b*b;
        int k=p,cnt=0;
        while(k){
            if(k&1){
                ans[cnt]+=a;
            }
            k>>=1;
            cnt++;
        }
    }
    for(int i=0;i<n;i++){
        cout<<1-ans[i]<<' '<<ans[i]<<endl;
    }
    return 0;
}