E - How Many Equations Can You Find

点击打开链接

Now give you an string which only contains 0, 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9.You are asked to add the sign ‘+’ or ’-’ between the characters. Just like give you a string “12345”, you can work out a string “123+4-5”. Now give you an integer N, please tell me how many ways can you find to make the result of the string equal to N .You can only choose at most one sign between two adjacent characters.
Input
Each case contains a string s and a number N . You may be sure the length of the string will not exceed 12 and the absolute value of N will not exceed 999999999999.
Output
The output contains one line for each data set : the number of ways you can find to make the equation.
Sample Input
123456789 3
21 1
Sample Output
18
1




#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
LL n,ans,l;
char a[20];
void dfs(LL len,LL sum)
{
	if(len==l)
	{
		if(sum==n)
			ans++;
		return ; 
	}
	LL i,s=0;
	for(i=len;i<l;i++)
	{
		s=s*10+a[i]-'0';
		dfs(i+1,sum+s);
		if(len!=0)
		  dfs(i+1,sum-s);
	}
}
int main()
{
	while(~scanf("%s %lld",a,&n))
	{
		ans=0;
		l=strlen(a);
		dfs(0,0);
		printf("%lld\n",ans);
	}
	return 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、付费专栏及课程。

余额充值