unsigned long long类型与long long类型

摘要:
遇到此类限制时,应该考虑使用无符号长类型。它可以简洁地声明为typedefensignedlongull。这样,如果ull类型的整数溢出,就相当于取模2^64。因为整个范围是[0,2^64-1]。

最近做题的时候,经常遇到范围是2^63,取模2^64的这种题目。遇到这种限制条件时就要想到用unsigned long long类型。

可以简洁地声明为typedef unsigned long long ull。这样,如果ull类型的整数溢出了,就相当于取模2^64了。因为ull的范围是[0,2^64-1]。

而ll的范围是[-2^63,2^63-1],因为有符号的第63位表示“正负”而不表示数值

HDU6492 分宿舍

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6492

1 #include<iostream>
2 #include<cmath>
3 #include<algorithm>
4 using namespacestd;
5 typedef unsigned long long ll;//重点了解 
6 intmain()
7 {
8     intt;
9     cin >>t;
10     intn, m, k, a, b, c;
11     while (t--)
12 {
13         cin >> n >> m >> k >> a >> b >>c;
14         ll ans = 100000000000000000;
15         for (int i = 0; i <= k; i++)
16 {
17             ll l = n + k -i;
18             ll r = m + k -i;
19             ll ans1 = i *c;
20             ll ans2 = 100000000000000000;
21             ll ans3 = 100000000000000000;
22             for (int j = 0; j <= l; j++)
23 {
24                 //ll ans2 = 1e9 + 10;
25                 ll aa = l -j;
26                 ll q1 = ceil(j*1.0 / 2)*a;
27                 ll q2 = ceil(aa*1.0 / 3)*b;
28                 ans2 = min(ans2, q1 +q2);
29 }
30             for (int j = 0; j <= r; j++)
31 {
32                 //ll ans3 = 1e9 + 10;
33                 ll aa = r -j;
34                 ll q1 = ceil(j*1.0 / 2)*a;
35                 ll q2 = ceil(aa*1.0 / 3)*b;
36                 ans3 = min(ans3, q1 +q2);
37 }
38             ans = min(ans, ans1 + ans2 +ans3);
39 }
40         cout << ans <<endl;
41 }
42     return 0;
43 }

unsigned long long类型与long long类型第1张

免责声明:文章转载自《unsigned long long类型与long long类型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Redis主从配置及主从切换iOS用域名或主机名获取IP地址(包含C语言接口 和iOS原生)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

office 2016 专业版 删除部分组件

删除Office2016 Professional Edition####1中的一些组件。打开控制面板。2.单击此选项。3.找到Office2016并右键单击以选择更改。4.选择并确认。5.选择要删除的组件(以Access为例)。6.单击此处。7.单击“继续”。8.等等。9.完成此方法并不是真正删除模块。这意味着模块已禁用。如果您想在将来重新启用它,请重复前...

kettle的job中运行每行

有时,在运行作业中的每一行时,我们需要多次执行作业或转换。假设我们需要导入从开始日期到昨天的所有旧数据。手动执行作业是痛苦和错误的。Kettle可以首先计算正确的日期,然后根据每个日期执行导入作业。在主作业中,返回日期转换首先运行,实际导入数据的作业在转换后运行。它是一个子作业,负责运行每个输入日期。子作业接收每行的“date”日期参数并执行它。在演示示例中...

微信小程序----返回上一页刷新或当前页刷新

1.Reload()方法刷新当前页面;2.replace()方法刷新当前页面;3.页面自动刷新当前页面;实现js刷新当前页面的三种方法使用微信小程序--返回上一页刷新或当前页面刷新1.在实现效果之前,您需要了解微信小应用程序的页面生命周期。如果你不太清楚,你可以看到微信小程序——页面生命周期;2.我们可以知道微信小程序页面由五个循环组成:onLoad、onR...

如何更改SQL Server2008默认数据库的存储路径

1.在安装SQlServer时,修改路径:当然,也可以修改共享函数目录和实例根目录。但是,我不知道共享函数目录和实例根目录是什么。...

等保2.0四级安全要求

平等保护2.0四级安全要求四级安全保护能力:应能够在统一的安全战略下,防止恶意攻击、严重自然灾害和来自国家一级、敌对组织和资源丰富的威胁源的其他严重危害造成的资源损害。它应该能够及时检测和监控攻击和安全事件,所有功能都可以快速恢复。以下粗体字段是平等保护的第4级和第3级之间的差异,应予以更多注意。...

【Lua】使用随机数(转)

游戏中有一个用于创建角色的随机命名功能,它使用随机数。我在网上找到一篇关于在Lua使用随机数的文章。标记它。Lua需要两个函数来生成随机数:数学。randomseed,数学。数学随机种子接收整数n作为随机序列种子。将系统时间视为随机种子是很自然的,也就是说,数学随机——然后连续生成i=1,5do打印结束的随机数,但问题出现了。如果程序在短时间内运行几次,您得...