zoukankan      html  css  js  c++  java
  • POJ 3181 Dollar Dayz

    一开始看到题目,就写了一个完全背包,然后一直wa,百度一下,蛋疼的是 结果是大数

    模拟高精度

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<string>
     5 #include<set>
     6 #include<vector>
     7 #include<map>
     8 #include<algorithm>
     9 #include<cmath>
    10 #include<stdlib.h>
    11 using namespace std;
    12 int  need,dp1[1010][100];
    13 void add(int x,int y)
    14 {
    15     for(int i=0;i<50;i++)
    16     {
    17         dp1[x][i]+=dp1[y][i];
    18         while(dp1[x][i]>=10)
    19         {
    20             dp1[x][i+1]++;
    21             dp1[x][i]-=10;
    22         }
    23     }
    24 }
    25 int main()
    26 {
    27     int k,i,j;
    28     while(cin>>need>>k)
    29     {
    30         memset(dp1,0,sizeof(dp1));
    31         dp1[0][0]=1;
    32         for(i=1; i<=k; i++)
    33             for(j=i;j<=need;j++)
    34                add(j,j-i);
    35        for(i=49;i>=0;i--)
    36        if(dp1[need][i]!=0)
    37        {
    38            for(j=i;j>=0;j--)
    39            cout<<dp1[need][j];
    40            cout<<endl;
    41            break;
    42        }
    43     }
    44 }

    在网上看到用两个长整型的数来表示一个大数,无耻地敲了一下

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<string>
     5 #include<set>
     6 #include<vector>
     7 #include<map>
     8 #include<algorithm>
     9 #include<cmath>
    10 #include<stdlib.h>
    11 using namespace std;
    12 const long long inf=1000000000000000000;
    13 long long  need,dp1[1010],dp2[1010];
    14 int main()
    15 {
    16     int k,i,j;
    17     while(cin>>need>>k)
    18     {
    19         memset(dp1,0,sizeof(dp1));
    20         memset(dp2,0,sizeof(dp2));
    21         dp2[0]=1;
    22         for(i=1; i<=k; i++)
    23         {
    24             for(j=i;j<=need;j++){
    25                dp1[j]+=dp1[j-i]+(dp2[j-i]+dp2[j])/inf;
    26                dp2[j]=(dp2[j-i]+dp2[j])%inf;
    27             }
    28         }
    29         if(dp1[need]==0)
    30         cout<<dp2[need]<<endl;
    31         else
    32         cout<<dp1[need]<<dp2[need]<<endl;
    33     }
    34 }
  • 相关阅读:
    git rebase 还是 merge的使用场景最通俗的解释
    漏洞复现:Struts2 远程代码执行漏洞(S2-033)
    linux临时网络配置
    漏洞复现:Struts2 S2-032 漏洞环境
    XXE攻击学习
    启用了不安全的HTTP方法【转】
    HTTP参数污染【转】
    逻辑漏洞挖掘方式
    大漏洞时代下的僵尸网络追踪-笔记
    markdown入门杂记
  • 原文地址:https://www.cnblogs.com/ainixu1314/p/3844086.html
Copyright © 2011-2022 走看看