ACdream 1095 EOF女神的相反数(数学:二进制处理)
2014-07-30 17:22
316 查看
EOF女神的相反数
Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others)SubmitStatisticNext
Problem
Problem Description
作为女神,EOF是很喜欢照镜子的~同样在数学中,EOF也是很喜欢相反数的。不过她既然是女神,她认知的相反数和我们凡人怎么能一样呢?给定一个十进制数A,EOF女神定义的相反数就是把这个数转化为二进制之后,忽略高位的0,然后作轴对称,例如对于十进制的数123(1111011),它的相反数是111(1101111)。EOF女神就打算以此来考验前来觐见的勇士。
Input
首先是一个正整数T,表示测试数据的组数。对于每组测试数据,只有一个正整数A(A<=10^18)
Output
对于每组测试数据,输出EOF女神眼中相反数。
Sample Input
2 123 5201314
Sample Output
111 2284921
Source
mathlover
Manager
mathloverSubmitStatistic
初看这道题感觉好牛逼的样子...我还特意去找bitset的用法
结果用暴力做就可以
我的代码总是错,原因应该就是移位操作符的用法有问题
百度百科:运算符为双目运算符,结合方向为从左到右,作用是把一个整型数的所有位向左移动指定的位数,移动到左边界之外的多余二进制位会被丢弃,并从右边界移入0。
可能就是因为把不为0的二进制位丢掉了吧,但是对于64位最多不就移动63次么...实在想不通
#include <cstdio> #include <cstring> #include <iostream> #define LL long long using namespace std; int main(void) { LL T, n, ans, tmp; int str[1000]; int num, cnt, cur; cin >> T; while(T--) { cin >> n; cnt = 0; memset(str, 0, sizeof(str)); while(n) { if(n & 1) str[cnt++] = 1; else str[cnt++] = 0; n >>= 1; } // cout << str << endl; tmp = 1; ans = 0; for(int i=cnt-1; i>=num; --i) { ans += (str[i]*tmp); tmp *= 2; } cout << ans << endl; /*这里是我的做法,问题应该出在移位操作 ans = 0; cur = 0; for(int i=cnt-1; i>=num; --i) { tmp = (str[i])<<cur; ans += tmp; cur++; } cout << ans << endl; */ } return 0; }
之前特意在网上查了下bitset用法
用bitset写了一个,结果因为最后处理数据和上面的方法一样,所以老是wa
现在改了下处理方法就A掉了
代码如下:
#include <cstdio> #include <bitset> #include <iostream> #include <algorithm> #define MAXN 10010 #define LL long long using namespace std; int main(void) { LL n; int T; scanf("%d", &T); while(T--) { cin >> n; bitset<64> b (n); string str = b.to_string(); // cout << str << endl; int cnt = 0; while(str[cnt] != '1') ++cnt; string chs(str, cnt, str.size()-cnt+1); // cout << chs << endl; LL ans = 0; LL tmp = 1; for(int i=0; i<chs.size(); ++i) { ans += (chs[i]-'0')*tmp; tmp *= 2; } cout << ans << endl; } return 0; }
相关文章推荐
- ACdream 区域赛指导赛之专题赛系列(1)の数学专场 A - EOF女神的相反数 (反转2进制)
- Acdream 1095 EOF女神的相反数
- acdream 1092 EOF女神的打地鼠游戏 (概率dp)
- ACdream - 1095 幸运女神的相反数
- EOF女神的相反数
- EOF女神的相反数
- ACdream 1092 EOF女神的打地鼠游戏 —— dp
- 数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用
- [转]数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用
- 图像处理数学方法(转)
- 数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用
- 数学之美系列之八:贾里尼克的故事和现代语言处理
- 数学之美 系列三 隐含马尔可夫模型在语言处理中的应用
- 数学之美 系列八-- 贾里尼克的故事和现代语言处理
- 数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用
- 数学之美 系列十八 矩阵运算和文本处理中的分类问题
- 数学之美 系列八-- 贾里尼克的故事和现代语言处理
- 数学之美 系列八-- 贾里尼克的故事和现代语言处理
- 数学之美 系列八-- 贾里尼克的故事和现代语言处理
- 数学之美 系列三 -- 隐含马尔可夫模型在语言处理中的应用