bzoj1416&1498: [NOI2006]神奇的口袋
来源:互联网 发布:理财入门知乎 编辑:程序博客网 时间:2024/05/23 19:17
传送门
傻逼题。
直接计算方案数,除上总方案数就可以了。
注意要用高精度。
为啥oj上有两道题?
#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define mo 10000using namespace std;int f[20005],p[20005],cnt0[20005],cnt1[20005],a[20005];int t,n,d,tot,x,y,k;void mult(int h[]){ int a[3005]; memset(a,0,sizeof(a)); a[0]=a[1]=1; for (int i=1;i<=p[0];i++) for (int j=1;j<=h[i];j++){ for (int k=1;k<=a[0];k++) a[k]*=p[i]; for (int k=1;k<=a[0];k++){ a[k+1]+=a[k]/mo; a[k]%=mo; } if (a[a[0]+1]) a[0]++; } printf("%d",a[a[0]]); for (int i=a[0]-1;i>=1;i--) printf("%04d",a[i]);}void chai(int x,int h[]){ for (int i=1;i<=p[0];i++) while (x%p[i]==0){ x/=p[i]; h[i]++; }}int main(){ for (int i=2;i<=20000;i++) if (!f[i]){ p[++p[0]]=i; for (int j=i;j*i<=20000;j++) f[i*j]=1; } scanf("%d%d%d",&t,&n,&d); for (int i=1;i<=t;i++){ scanf("%d",&a[i]); tot+=a[i]; } while (n--){ scanf("%d%d",&x,&y); chai(a[y],cnt0); chai(tot,cnt1); a[y]+=d; tot+=d; } for (int i=1;i<=p[0];i++){ k=min(cnt0[i],cnt1[i]); cnt0[i]-=k; cnt1[i]-=k; } mult(cnt0); printf("/"); mult(cnt1);}
0 0
- bzoj1416&1498: [NOI2006]神奇的口袋
- BZOJ 1416: [NOI2006]神奇的口袋 高精度
- noi2006神奇口袋
- BZOJ 1416: [NOI2006]神奇的口袋 分数重载,模拟
- 【模拟】【高精度乘法】【NOI2006】神奇口袋
- OJ_1114 神奇的口袋
- OpenJudge_P1757 神奇的口袋
- dp 神奇的口袋
- 1114神奇的口袋
- 神奇的口袋
- 神奇的口袋
- 1757:神奇的口袋
- 神奇的口袋
- openjudge1757:神奇的口袋
- 神奇的口袋
- 题目1114:神奇的口袋
- 题目1114:神奇的口袋
- 题目1114:神奇的口袋
- 动作调用-SQL
- Qt的安装(Windows)
- 两点触控--画多边形
- 排序7:希尔排序
- POJ2142The Balance扩展欧几里得
- bzoj1416&1498: [NOI2006]神奇的口袋
- 数据库列 操作
- Leetcode Algorithm 062. Unique Paths
- Windows Hotkey control volume
- Java 链表的底层实现
- JavaScript学习笔记28-数组
- 排序8:排序算法的分析
- 高德地图——加载当前位置 LBS获取自定义坐标
- Android AutoLayout全优屏幕适配方式