KY18 特殊乘法

描述:
写个算法,对2个小于1000000000的输入,求结果。 特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35
输入描述:
两个小于1000000000的数
输出描述:
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
示例1

输入:
123 45

输出:
54

知识点: 字符串
AC代码:

#include <stdio.h>
#include <string.h>

int main() {
    char s1[15], s2[15];
    while(scanf("%s %s", s1, s2) != EOF) {
        int sum = 0;
        for(int i = 0 ; i < strlen(s1); i ++)
            for(int j = 0; j < strlen(s2); j ++)
                sum += (s1[i] - '0') * (s2[j] - '0');
        printf("%d\n", sum);
    }
    
    return 0;
}
帮我的模型画出类似的量子度规迹与Berry曲率绝对值之差的等值线图import numpy as np import matplotlib.pyplot as plt from math import pi, exp import cmath # 模型参数 t1 = 1.0 t2 = 0.4 * cmath.exp(1j * 0.37) # 复数值跃迁 t3 = 0.13 # 晶格矢量 (假设二维正方晶格) lat = np.array([[1.0, 0.0], [0.0, 1.0]]) # 轨道位置 (假设三个轨道位于原点) orb = np.array([[0.0, 0.0], [0.0, 0.0], [0.0, 0.0]]) def hamiltonian(kx, ky): """构建3x3哈密顿量矩阵""" H = np.zeros((3, 3), dtype=complex) # 添加跃迁项 (基于提供的跳跃项) # t1 相关项 H[0, 1] += t1 * (1 + cmath.exp(-1j * kx)) # [0,0] 和 [-1,0] H[0, 2] += t1 * (1 + cmath.exp(-1j * ky)) # [0,0] 和 [0,-1] # t2 相关项 H[1, 2] += t2 * (1 + cmath.exp(1j * (kx - ky)) + cmath.exp(-1j * kx)) # [0,0], [1,-1], [-1,0] H[2, 1] += np.conj(t2) * (1 + cmath.exp(-1j * (kx - ky)) + cmath.exp(1j * kx)) # 厄米共轭 # t3 相关项 (次近邻跳跃) H[0, 0] += 2 * t3 * (np.cos(kx) + np.cos(ky)) H[1, 1] += 2 * t3 * (np.cos(kx) + np.cos(ky)) H[2, 2] += 2 * t3 * (np.cos(kx) + np.cos(ky)) # 确保哈密顿量是厄米的 H = (H + H.conj().T) / 2 return H def hamiltonian_deriv(kx, ky, mu): """计算哈密顿量对k_mu的导数 (mu=0: kx, mu=1: ky)""" H_deriv = np.zeros((3, 3), dtype=complex) if mu == 0: # ∂/∂kx # t1 项导数 H_deriv[0, 1] += -1j * t1 * cmath.exp(-1j * kx) H_deriv[0, 2] += 0 # t2 项导数 H_deriv[1, 2] += t2 * (1j * cmath.exp(1j * (kx - ky)) - 1j * cmath.exp(-1j * kx)) # t3 项导数 H_deriv[0, 0] += -2 * t3 * np.sin(kx) H_deriv[1, 1] += -2 * t3 * np.sin(kx) H_deriv[2, 2] += -2 * t3 * np.sin(kx) else: # ∂/∂ky # t1 项导数 H_deriv[0, 1] += 0 H_deriv[0, 2] += -1j * t1 * cmath.exp(-1j * ky) # t2 项导数 H_deriv[1, 2] += t2 * (-1j * cmath.exp(1j * (kx - ky))) # t3 项导数 H_deriv[0, 0] += -2 * t3 * np.sin(ky) H_deriv[1, 1] += -2 * t3 * np.sin(ky) H_deriv[2, 2] += -2 * t3 * np.sin(ky) # 确保导数是厄米的 H_deriv = (H_deriv + H_deriv.conj().T) / 2 return H_deriv def calc_qgt(kx, ky): """计算基态的量子几何张量""" H = hamiltonian(kx, ky) # 对角化哈密顿量 E, U = np.linalg.eigh(H) psi0 = U[:, 0] # 基态波函数 # 计算哈密顿量导数 H_dx = hamiltonian_deriv(kx, ky, 0) H_dy = hamiltonian_deriv(kx, ky, 1) # 初始化QGT Q = np.zeros((2, 2), dtype=complex) # 使用公式(1.2.24)计算QGT分量 for n in range(1, 3): # 对激发态求和 (n=1,2) psin = U[:, n] denom = (E[0] - E[n])**2 # ⟨φ₀|∂ₓH|φₙ⟩ term_x = np.vdot(psi0, H_dx @ psin) # ⟨φₙ|∂ᵧH|φ₀⟩ term_y = np.vdot(psin, H_dy @ psi0) Q[0, 0] += term_x * term_y / denom # 其他分量同理 term_y2 = np.vdot(psin, H_dx @ psi0) Q[0, 1] += term_x * term_y2 / denom term_x2 = np.vdot(psi0, H_dy @ psin) Q[1, 0] += term_x2 * term_y / denom Q[1, 1] += term_x2 * term_y2 / denom return Q # 设置k空间网格 nk = 100 # 网格点数 kx_list = np.linspace(0, 2*pi, nk) ky_list = np.linspace(0, 2*pi, nk) tr_g = np.zeros((nk, nk)) # 遍历所有k点 for i, kx in enumerate(kx_list): for j, ky in enumerate(ky_list): Q = calc_qgt(kx, ky) # 取实部得到度规张量g g = np.real(Q) # 计算迹 tr_g[j, i] = np.trace(g) # 绘制热图 plt.figure(figsize=(8, 6)) im = plt.imshow(tr_g, cmap='hot', origin='lower', extent=[0, 2*pi, 0, 2*pi]) plt.colorbar(im, label='tr(g)') plt.xlabel('$k_x$') plt.ylabel('$k_y$') plt.title('Quantum Metric Trace (tr(g)) for Ground State') plt.tight_layout() plt.show()
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值