zoukankan      html  css  js  c++  java
  • 简单递推系列 uva习题

    uva 11375 高精度加递推

    主要是高精度加递推(主要思想还是参考liurujia书上)自己想了半天没有想出来。就不浪费时间了,理解后果断直接上模版。还犯了一个小错误wa一次0.0

      1 //
      2 //  BigNum.cpp
      3 //  By Zhang xiaohao
      4 //
      5 //
      6 #include <iostream>
      7 #include <cstdio>
      8 #include <cstring>
      9 #define maxn 1010
     10 using namespace std;
     11 
     12 struct BigNum{
     13     char str[maxn];     //数字反着存方便运算
     14     int len;
     15 
     16     BigNum():len(0){
     17         memset(str, 0, sizeof str);
     18     }
     19 
     20     BigNum operator+(BigNum &num)
     21     {
     22         BigNum ret;
     23         for(int i=0, g=0; g || i<max(len, num.len); i++){
     24             int ts = g;
     25             if(i<len) ts+=(int)str[i]-'0';
     26             if(i<num.len) ts+=(int)num.str[i]-'0';
     27             g = ts/10;
     28             ret.str[ret.len++] = ts%10+'0';
     29         }
     30         ret.str[ret.len] = '';
     31         return ret;
     32     }
     33 
     34     BigNum operator+(int n)
     35     {
     36         BigNum num, ret;
     37         sprintf(num.str, "%d", n);
     38         num.len = strlen(num.str);
     39         for(int i=0; i<num.len/2; i++){
     40             swap(num.str[i], num.str[num.len-i-1]);
     41         }
     42         ret = num+*this;
     43         return ret;
     44     }
     45 
     46     BigNum operator=(char c[]){
     47         BigNum ret;
     48         ret.len = strlen(c);
     49         for(int i=ret.len-1; i>=0; i--){
     50             ret.str[i] = c[i];
     51         }
     52         ret.str[len] = '';
     53         return ret;
     54     }
     55 
     56     BigNum operator=(int num){
     57         sprintf(this->str, "%d", num);
     58         this->len = strlen(this->str);
     59         for(int i=0; i<this->len/2; i++){
     60             swap(this->str[i], this->str[this->len-i-1]);
     61         }
     62         return *this;
     63     }
     64 };
     65 
     66 ostream& operator <<(ostream &out, const BigNum& x){
     67     for(int i=x.len-1; i>=0; i--){
     68         out << x.str[i];
     69     }
     70     return out;
     71 }
     72 
     73 istream& operator >>(istream &in, BigNum& x){
     74     in >> x.str;;
     75     x.len = strlen(x.str);
     76     for(int i=0; i<x.len/2; i++){
     77         swap(x.str[i], x.str[x.len-i-1]);
     78     }
     79     return in;
     80 }
     81 
     82 int n, c[] = {6,2,5,5,4,5,6,3,7,6};
     83 BigNum dp[5010], sum[5010];
     84 
     85 void init()
     86 {
     87     for(int i=0; i<maxn; i++)dp[i] = 0;
     88     for(int i=0; i<maxn; i++)sum[i] = 0;
     89     dp[0] = 1;
     90     sum[0] = 0;
     91     for(int i = 0; i<=2000; i++){
     92         for(int j=0; j<10; j++){
     93             if(!(i==0 && j==0) && i+c[j]<=2000) dp[i+c[j]] = dp[i]+dp[i+c[j]];
     94         }
     95     }
     96     for(int i=1; i<=2000; i++){
     97         sum[i] = sum[i-1]+dp[i];
     98         if(i==6) sum[i] = sum[i]+1;
     99     }
    100 }
    101 
    102 void debug()
    103 {
    104     for(int i=0; i<10; i++)
    105     cout << dp[i] << endl;
    106 }
    107 
    108 int main()
    109 {
    110 //    freopen("in.txt", "r", stdin);
    111 
    112     init();
    113     while(scanf("%d", &n)!=EOF)
    114     {
    115         cout << sum[n] << endl;
    116     }
    117     return 0;
    118 }
    View Code
    奔跑吧!少年!趁着你还年轻
  • 相关阅读:
    mysql中delimiter
    error: unpacking of archive failed on file /usr/sbin/zabbix_agent;592e5bc3: cpio: open
    CefSharp中文帮助文档
    ASP.NET Aries 开发框架
    简洁的富文本编辑器
    asp.net core 获取appsettings.json里的配置
    在asp.net core中使用NLog
    临时禁用Resharper
    visual studio 无添加视图 选项
    visual studio(vs)初始化
  • 原文地址:https://www.cnblogs.com/shu-xiaohao/p/3410046.html
Copyright © 2011-2022 走看看