c++ - 我在使用模算术解决问题时遇到问题
问题描述
我需要在给定的表达式 i*(n+k-2)-((i*(i+1)*(n-1))/2) 上应用模数 e=10^9+7,其中 i 是n 和 k 。n 和 k 由用户输入。2≤N≤10^18 1≤K≤10^18
我尝试使用基础知识使用模运算,即 (ab)%e=((a%e)-(b%e))%e 和 (a b)%e=((a%e) (b%e)) %e。
//i have taken unsigned long long int as the data type for all variables
a=1;
b=1;
cin>>n>>k;
i=(n+k-2)/(n-1);
//s=(i*(n+k-2))-((i*(n-1)*(i+1))/2
j=(i+1);
p=n+k-2;
q=n-1;
r=i/2;
u=j/2;
if(i%2==0)
{
a=(a*i)%e;
a=(a*p)%e;
b=(b*r)%e;
b=(b*q)%e;
b=(b*j)%e;
s=a-b;
}
else
{
a=(a*i)%e;
a=(a*p)%e;
b=(b*u)%e;
b=(b*q)%e;
b=(b*i)%e;
s=a-b;
}
cout<<s%e<<endl;
对于小型测试用例,我得到了正确的答案,但对于大型测试用例,我没有得到正确的答案。
解决方案
推荐阅读
- javascript - 使用 javascript 在 fetch 中读取 json
- security - IBM Cloud:查看特定于用户的授权(策略)所需的 IAM 访问策略?
- python - 将多个numpy图像转换为灰度
- laravel - 在 Laravel 6 中联系后向客户发送欢迎电子邮件
- python-3.x - 偏差方差权衡 KeyError
- mule - 根据条件路由流程
- asp.net - Sharepoint Online ClinetContext.ExecuteQuery 导致连接重置
- android - 底部导航视图未在整个空间中展开
- azure - 如何将不同的 aks 部署放在同一个资源组/集群中?
- python - Python Anaconda ImportError:menuinst.knownfolders