主页
搜索
最近更新
数据统计
申请密钥
系统公告
1
/
1
请查看完所有公告
7.29进制专题总结
最后更新于 2025-07-31 13:58:53
作者
chenjinxuan1
分类
个人记录
复制 Markdown
查看原文
删除文章
更新内容
## 温馨提醒:未满114514岁的人禁止观看本文章 说好再也不写的,但今天我又想写了。 # 进制: ### x 进制转 10 进制: ```cpp int f(int x,string s){ int t = 1; int sum = 0; for (int i = s.size()-1;i >= 0;i--){ if (s[i] >= '0' && s[i] <= '9'){ int d = s[i]-'0'; sum += d*t; }else { int d = s[i]-'A'+10; sum += d*t; } t *= x; } return sum; } ``` ### 10 进制转 x 进制: ```cpp string f(int n,int x){ string s; while(n){ char c; int d = n%x; if (d <= 9) c = d+'0'; else c = d-10+'A'; s = c+s; n /= x; } return s; } ``` # 磕🍬棕姐: ### P1749 [入门赛 #19] 分饼干 II: 1. ❌原因:忘了高斯算法。 2. ❌代码: ```cpp #include<bits/stdc++.h> using namespace std; int main(){ int t; cin >> t; while(t--){ int n,k; cin >> n >> k; if(n % k == 0){ cout << "Yes" << endl; }else { cout << "No" << endl; } } return 0; } // 骗分骗了40分,六百六十六。 ``` 3. 考察芝士殿:高斯算法。 4. 姐提死路:如果n>=(1+k)*k/2的话就输出Yes,否则输出No(一定记住不开long long见祖宗)。 5. ✔️代码: ```cpp #include<bits/stdc++.h> using namespace std; int main(){ long long t; cin >> t; while(t--){ long long n,k; cin >> n >> k; if (n >= (1+k)*k/2) cout << "Yes" << endl; else cout << "No" << endl; } return 0; } ``` ### B3619 10 进制转 x 进制: 1. ❌原因:不会。 2. ❌代码:不会咋写代码? 3. 考察芝士殿:进制 4. 姐提死路:判断是否为数字或字母。 5. ✔️代码: ```cpp #include<bits/stdc++.h> using namespace std; string f(int n,int x){ string s; while(n){ char c; int d = n%x; if (d <= 9) c = d+'0'; else c = d-10+'A'; s = c+s; n /= x; } return s; } int main(){ int n,x; cin >> n >> x; cout << f(n,x); return 0; } ``` ### P6353 [COCI 2007/2008 #3] OKTALNI: 1. ❌原因:没写。 2. ❌代码:木有。 3. 考察芝士殿:二进制转八进制。 4. 姐提死路:先判断是否要加0,再用打标法来转换。 5. ✔️代码: ```cpp #include<bits/stdc++.h> using namespace std; int main(){ string s; cin >> s; if (s.size() % 3 == 1) s = "00"+s; if (s.size() % 3 == 2) s = "0"+s; for (int i = 0;i <= s.size();i+=3){ if (s[i] == '0' && s[i+1] == '0' && s[i+2] == '0') cout << "0"; if (s[i] == '0' && s[i+1] == '0' && s[i+2] == '1') cout << "1"; if (s[i] == '0' && s[i+1] == '1' && s[i+2] == '0') cout << "2"; if (s[i] == '0' && s[i+1] == '1' && s[i+2] == '1') cout << "3"; if (s[i] == '1' && s[i+1] == '0' && s[i+2] == '0') cout << "4"; if (s[i] == '1' && s[i+1] == '0' && s[i+2] == '1') cout << "5"; if (s[i] == '1' && s[i+1] == '1' && s[i+2] == '0') cout << "6"; if (s[i] == '1' && s[i+1] == '1' && s[i+2] == '1') cout << "7"; } return 0; } ``` ### B2140 二进制分类: 1. ❌原因:没时间。 2. ❌代码:包没有的。 3. 考察芝士殿:进制。 4. 姐提死路:先10进制转x进制再判断。 5. ✔️代码: ```cpp #include<bits/stdc++.h> using namespace std; string f(int n,int x){ string sum; while(n){ char c; int b=n%x; if(b<=9)c=b+'0'; else c=b-10+'A'; sum=c+sum; n/=x; } return sum; } int main(){ int n,aa=0,bb=0; cin>>n; for(int i=1;i<=n;i++){ string s=f(i,2); int a=0,b=0; for(int j=0;j<s.size();j++){ if(s[j]=='1')a++; else b++; } if(a>b)aa++; else bb++; } cout<<aa<<' '<<bb; } ``` ### P1604 B进制星球: 1. ❌原因:包时间的。 2. ❌代码:包没有的。 3. 考察芝士殿:进制。 4. 姐提死路:判断为字母的话就-10+A,是数字就-0,再判断s长还是ss长,把短的加一个0。 5. ✔️代码: ```cpp #include<bits/stdc++.h> using namespace std; int f(char x){ if (x >= 'A' && x <= 'Z') return x-'A'+10; else return x-'0'; } char ff(int x){ if (x <= 9) return x+'0'; else return x-10+'A'; } int main(){ int n; string s,ss; cin >> n >> s >> ss; int len1 = s.size(); int len2 = ss.size(); int len = max(len1,len2); if (len1 < len2){ for (int i = len1;i < len2;i++){ s = '0'+s; } }else { for (int i = len2;i < len1;i++){ ss = '0'+ss; } } string ans; int tot = 0; for (int i = len-1;i >= 0;i--){ int x,y; x = f(s[i]); y = f(ss[i]); int d = x+y+tot; tot = d/n; d %= n; ans = ff(d)+ans; } if (tot){ ans = ff(tot)+ans; } cout << ans; return 0; } ``` ### P8782 [蓝桥杯 2022 省 B] X 进制减法: 1. ❌原因:莫得时间。 2. ❌代码:包没的。 3. 考察芝士殿:进制。 4. 姐提死路:。 5. ✔️代码: ```cpp //待写 ``` ### 测谎仪: 1. 老师是帅哥[✔️] 2. 老师不是帅哥[❌] ### 预测未来机: 1. 老师能捡到百元大钞。 ##### 不写了。 
正在渲染内容...
点赞
1
收藏
0