zoukankan      html  css  js  c++  java
  • FZU-Problem 2294 Uint47 calculator

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=2294

    题意:按照所给负号进行赋值、加、减乘、除和取余的操作。

    解题思路:用map来存储字符串与值之间的对应关系。 

    ll 只能存64位,对于所给的六种运算,只有乘法有可能溢出。故对乘法采用快速乘取模的方法。将乘法变成加法,这样就不会溢出了。

    AC代码:

     1 #include <iostream>
     2 #include <map>
     3 #include <algorithm>
     4 #include <string>
     5 using namespace std; 
     6 typedef unsigned long long  ull;
     7 ull mod = 1LL << 47;//2的47次方 
     8 map<string,ull>m;
     9 int main()
    10 {
    11     ull d ;
    12     string a,b,s;
    13     while(cin>>s)
    14     {
    15         if(s=="def")
    16         {
    17             cin>>a>>d;
    18             m[a]=(d+mod)%mod;
    19         }
    20         else if(s=="add")
    21         {
    22             cin>>a>>b;
    23             m[a]=(m[a]+m[b])%mod;
    24         }
    25         else if(s=="sub")
    26         {
    27             cin>>a>>b;
    28             m[a]=(m[a]-m[b])%mod;
    29         }
    30         else if(s=="mul")
    31         {
    32             cin>>a>>b;
    33             m[a]=(m[a]*m[b])%mod;
    34         }
    35         else if(s=="div")
    36         {
    37             cin>>a>>b;
    38             m[a]=m[a]/m[b];
    39         }
    40         else
    41         {
    42             cin>>a>>b;
    43             m[a]=m[a]%m[b];
    44         }
    45         cout<<a<<" = "<<m[a]<<endl;
    46     }
    47 }
  • 相关阅读:
    文件操作类File
    文件流操作
    自动登录和解/加密
    redis---set类型常用命令
    div
    css2
    css-id选择器
    table标签
    段落标签-换行标签
    input-form-select-a-img-ul-dl标签
  • 原文地址:https://www.cnblogs.com/lino/p/9409147.html
Copyright © 2011-2022 走看看