UVA 11736 Debugging RAM

本文分享了一次比赛中关于64位数值处理的经验教训。主要介绍了如何使用C++进行大整数运算,尤其是在读取和转换进制字符串到64位整数的过程中,通过实例代码展示了具体的实现细节。

模拟题;

比赛的时候忘记把1变成64位的1了,跪了好久;

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<map>
 4 #include<string>
 5 using namespace std;
 6 
 7 unsigned long long val[250];
 8 int num[250];
 9 map<string,int>mp;
10 char s[100];
11 char jkl[111];
12 int main()
13 {
14     int d,b,v;
15     while(scanf("%d%d",&b,&v)!=EOF)
16     {
17         mp.clear();
18         for(int i=0;i<v;i++)
19         {
20             val[i]=0;
21             num[i]=0;
22         }
23         for(int i=0;i<v;i++)
24         {
25             scanf("%s",s);
26             scanf("%d",&d);
27             mp[s]=i;
28             num[i]=d;
29         }
30         gets(jkl);
31         int q;
32         char w;
33         for(int i=0;i<v;i++)
34         {
35             unsigned long long tmp=0;
36             for(int j=num[i]-1;j>=0;j--)
37             {
38                 for(int k=b-1;k>=0;k--)
39                 {
40                     w=getchar();
41                     if(w=='1')
42                     tmp+=((unsigned long long)1)<<(j*b+k);
43                 }
44                 gets(jkl);
45             }
46             val[i]=tmp;
47         }
48         scanf("%d",&q);
49         gets(jkl);
50         while(q--)
51         {
52             scanf("%s",s);
53             if(mp.find(s)==mp.end())printf("%s=\n",s);
54             else printf("%s=%llu\n",s,val[mp[s]]);
55         }
56     }
57     return 0;
58 }
View Code

 

转载于:https://www.cnblogs.com/yours1103/p/3422398.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值