博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
杭电ACM——6467,简单数学题(思维)
阅读量:4049 次
发布时间:2019-05-25

本文共 1204 字,大约阅读时间需要 4 分钟。

突破口:F(n)=∑i=1n(i×∑j=inCij) = 2n×(n-1)+1

怎么推的?找规律的。此外,还有公式C0n+…+Cnn=2n,或许可以帮助推出上式。
输入数据很大,需要用快速幂。

代码如下:

#include
#include
#define mod 1000000007using namespace std;long long quick_pow(long long a,long long b) //快速幂(自个写的,可能会与网上的不太一样){ long long ans=1; while(b!=0) { if(b%2==0) { a=(a*a)%mod; b/=2; } else { ans=(ans*a)%mod; b--; } } return ans;}int main(){ long long n; int i; long long ans; while(~scanf("%lld",&n)) { ans=quick_pow(2,n); n=(n-1)%mod; //取模运算要仔细,否则容易出错,而且一出错还很难找到哪里错。 ans=(ans*n+1)%mod; printf("%lld\n",ans); } return 0;}

下面是另外一个代码:

#include
#include
#define mod 1000000007using namespace std;long long quick_pow(long long a,long long b){ long long ans=1; while(b!=0) { if(b%2==0) { a=(a*a)%mod; b/=2; } else { ans=(ans*a)%mod; b--; } } return ans;}int main(){ long long n; int i; long long ans; while(~scanf("%lld",&n)) { ans=(quick_pow(2,n)*(n-1)%mod+1)%mod; printf("%lld\n",ans); } return 0;}

下面这个代码WA,仅仅就是因为取模的过程不一样。因此,当需要多次取模的时候,一定要小心。

转载地址:http://fbdci.baihongyu.com/

你可能感兴趣的文章
自定义 select 下拉框 多选插件
查看>>
js获取url链接携带的参数值
查看>>
gdb 调试core dump
查看>>
gdb debug tips
查看>>
arm linux 生成火焰图
查看>>
linux和windows内存布局验证
查看>>
linux insmod error -1 required key invalid
查看>>
linux kconfig配置
查看>>
linux不同模块completion通信
查看>>
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>