FZU-Problem 2294 Uint47 calculator

Posted lino

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于FZU-Problem 2294 Uint47 calculator的主要内容,如果未能解决你的问题,请参考以下文章

FZU-Problem 2150 Fire Game(两点bfs)

初学者2个小问题,用C/C++的。 两个function

C memcpy 在运行时崩溃

小程序websocket推送消息Uint8Array/ArrayBuffer

#include <reg52.h> #define uchar unsigned char //宏定义 #define uint unsigned int void de

pythonint转换成c_uint