1064B - Equations of Mathematical Magic(数学)

首先:不要直接输出pow()的值,会有bug

题目大意
就是解一个方程:a−(a⊕x)−x=0 (a已知)
解题思路
a−(a⊕x)−x=0 <> a−(a^x)−x=0 <> x^a = x-a
如果运算符 ‘^’与 ‘-’起到相同的效果的话就是一个解
分析四种比较;
1^1=0 1-1=0
1^0=1 1-0=1
0^0=0 0-0=0,
0^1=1 0-1=-1
当a的二进制表示,如果这个位是1,则x对应的二进制对应的位数是0或者1都行;如果这个位是0,则x对应的二进制对应的位数只能是0。
所以,a的二进制表示有几个1就有2的几次方的情况。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 3e6 + 7;
//char str[maxn][maxn];
int a[maxn],b[maxn],c[maxn];
priority_queue <int,vector<int>,greater<int> > q;

int main(){
    int t;
    cin >> t;
    while(t--){
        ll x;
        ll sum = 0;
        cin >> x; 
        while(x){
            if(x&1){
                x/=2;
                sum++;
            }
            else {
                x/=2;
            }
        }
        //直接输出wa了几发
     int  ans = pow(2,sum) ;
         printf("%d\n",ans);
   }

    
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
圣维南方程组的程序实现需要一定的数学基础和编程经验。以下是一份使用Python语言实现的圣维南方程组的代码示例,供参考: ```python import numpy as np import matplotlib.pyplot as plt # 参数设置 g = 9.81 # 重力加速度 L = 1.0 # 河道长度 H0 = 0.2 # 初始河道深度 dx = 0.1 # 空间步长 dt = 0.01 # 时间步长 t_max = 5 # 最大模拟时间 # 空间网格 x = np.arange(0, L+dx, dx) N = len(x) # 初始条件 h = H0 * np.ones(N) # 河道深度 hu = np.zeros(N) # 河道动量 hv = np.zeros(N) # 河道动量 # 时间网格 t = np.arange(0, t_max, dt) M = len(t) # 模拟主循环 for n in range(M-1): # 计算水流速度 u = hu / h v = hv / h # 计算水流动量 q = h * u # 计算水流加速度 dhdt = -np.gradient(q, dx) dudt = -g * np.gradient(h, dx) - u * np.gradient(u, dx) - v * np.gradient(u, dx) dvdt = -g * np.gradient(h, dx) - u * np.gradient(v, dx) - v * np.gradient(v, dx) # 更新河道深度和动量 h += dhdt * dt hu += dudt * dt hv += dvdt * dt # 边界条件 h[0] = H0 hu[0] = 0 hv[0] = 0 h[-1] = H0 hu[-1] = 0 hv[-1] = 0 # 绘图 plt.clf() plt.plot(x, h, label='h') plt.plot(x, u, label='u') plt.plot(x, v, label='v') plt.legend() plt.title('t = {:.2f}'.format(t[n])) plt.xlabel('x') plt.ylabel('h/u/v') plt.grid() plt.pause(0.01) ``` 上述代码中,我们使用了NumPy库和Matplotlib库来进行数值计算和绘图。首先,我们设置了一些模拟参数,包括重力加速度、河道长度、初始河道深度、空间步长、时间步长和最大模拟时间。然后,我们定义了空间网格和初始条件,并在主循环中进行数值计算和更新。最后,我们使用Matplotlib库来绘制河道深度、水流速度和水流动量随空间的变化情况,并通过动态展示的方式来观察模拟结果。 需要注意的是,上述代码仅为示例代码,可能存在一些不足之处。在实际应用中,需要根据具体问题进行适当的修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值