博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 3028 食物——生成函数
阅读量:7134 次
发布时间:2019-06-28

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

题目:

把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的样子,用组合意义看一下第 n 项的系数,就是 n-1 的可以不选的划分,即 C( n-1+3,3 ) 。为了高精度方便,化成 (n+2)*(n+1)*n/6 。

别忘了取模。

注意读入高精度数字的方法。错了几次之后只会一位一位地读了……

#include
#include
#include
#include
using namespace std;const int N=1600,base=1e2,mod=10007;int a[N],b[N],c[N];void rdn(){ char ch=getchar(); while(ch>'9'||ch<'0')ch=getchar(); while(ch>='0'&&ch<='9') b[++b[0]]=ch-'0',ch=getchar(); for(int i=b[0];i>1;i-=2) a[++a[0]]=(b[i-1]<<3)+(b[i-1]<<1)+b[i]; if(b[0]&1)a[++a[0]]=b[1]; for(int i=a[0]+1;i<=b[0];i++)b[i]=0;}void print(int *a){ printf("%d",a[a[0]]); for(int i=a[0]-1;i;i--) printf("%02d",a[i]); puts("");}void pls(int *b,int x){ b[1]+=x; for(int i=1;i<=b[0];i++) { if(b[i]
1) a[i-1]+=(a[i]%x)*base; a[i]/=x; } while(a[0]>1&&!a[a[0]])a[0]--;}void upd(int *a){ for(int i=a[0];i>1;i--) a[i-1]+=a[i]%mod*base;}int main(){ rdn(); for(int i=0;i<=a[0];i++)b[i]=a[i]; pls(b,1);mul(); pls(b,1);mul(); div(a,6);upd(a); printf("%d\n",a[1]%mod); return 0;}

 

转载于:https://www.cnblogs.com/Narh/p/10028551.html

你可能感兴趣的文章
Log--检查各数据库日志的使用情况
查看>>
小白学数据分析----->ARPPU的误区
查看>>
Why游戏作品合集
查看>>
【背景建模】VIBE
查看>>
函数项级数的一致收敛
查看>>
Axure RP 快速原型设计工具
查看>>
The Definitive C++ Book Guide and List--reference
查看>>
去除List集合中的重复对象,Map遍历代码
查看>>
ASP.NET MVC 5 - 视图
查看>>
Action类为何要继承ActionSupport
查看>>
Rhythmk 一步一步学 JAVA (17):Servlet 文件上传
查看>>
【C#】C#委托学习
查看>>
Windows 2012 R2中安装SharePoint 2013 sp1参考
查看>>
WP7.1 应用程序发布到Marketplace
查看>>
NSIS:判断程序是否运行并进行卸载
查看>>
使用SQL Server存储ASP.NET Session变量
查看>>
C#多线程与异步的区别
查看>>
boost::archive::text_oarchive
查看>>
matplotlib 显示中文
查看>>
WPF单线程定时器 简单实例
查看>>