FZU-Problem 2294 Uint47 calculator

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

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

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

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

AC代码:

 #include <iostream>
#include <map>
#include <algorithm>
#include <string>
using namespace std;
typedef unsigned long long ull;
ull mod = 1LL << ;//2的47次方
map<string,ull>m;
int main()
{
ull d ;
string a,b,s;
while(cin>>s)
{
if(s=="def")
{
cin>>a>>d;
m[a]=(d+mod)%mod;
}
else if(s=="add")
{
cin>>a>>b;
m[a]=(m[a]+m[b])%mod;
}
else if(s=="sub")
{
cin>>a>>b;
m[a]=(m[a]-m[b])%mod;
}
else if(s=="mul")
{
cin>>a>>b;
m[a]=(m[a]*m[b])%mod;
}
else if(s=="div")
{
cin>>a>>b;
m[a]=m[a]/m[b];
}
else
{
cin>>a>>b;
m[a]=m[a]%m[b];
}
cout<<a<<" = "<<m[a]<<endl;
}
}
上一篇:【java开发系列】— JDOM创建、改动、删除、读取XML文件


下一篇:js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)