【P1013 [NOIP1998 提高组] 进制位】(2022.05.28)tg
2022/5/28 23:19:44
本文主要是介绍【P1013 [NOIP1998 提高组] 进制位】(2022.05.28)tg,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
【P1013 [NOIP1998 提高组] 进制位】
思路:(20分)
字母所代表的数字不重复,所以进制数l一定大于等于字母个数n−1,即l≥n−1
那么到底是几进制?可以考虑枚举,注意数据范围(3≤n≤9),如果可以枚举进制数l,判断在每个进制下的加法表是否合法,判断加法表考虑一下暴力 O(n2) ,复杂度完全可以接受。
那最大要枚举到多少?最大即为最大的数 (n−1)∗2+1
最终可得 l 枚举的范围 n−1≤l≤2n−1 (显然,如果更大,结果是一样的)
#include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; char mp[30]; int cnt[30]; char ch; char s[30]; int n; int main(){ scanf("%d\n",&n); int i,j; getchar(); n--; for(i=0;i<n;i++){ getchar(); scanf("%c",&ch); mp[i]=ch; } for(i=0;i<n;i++){ getchar(); scanf("%c",&ch); for(j=0;j<n;j++){ getchar(); scanf("%s",s); if(strlen(s)>1)continue; for(int k=0;k<n;k++){ if(mp[k]==s[0]){ cnt[k]++; } } } } for(i=1;i<n;i++) if(!cnt[i]){ printf("ERROR!\n"); return 0; } for(i=1;i<n;i++){ printf("%c=%d ",mp[i],cnt[i]-1); } printf("\n%d\n",n); return 0; }
这篇关于【P1013 [NOIP1998 提高组] 进制位】(2022.05.28)tg的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign服务间调用学习入门
- 2024-12-27OpenFeign学习入门:轻松掌握微服务通信
- 2024-12-27OpenFeign学习入门:轻松掌握微服务间的HTTP请求
- 2024-12-27JDK17新特性学习入门:简洁教程带你轻松上手
- 2024-12-27JMeter传递token学习入门教程
- 2024-12-27JMeter压测学习入门指南
- 2024-12-27JWT单点登录学习入门指南
- 2024-12-27JWT单点登录原理学习入门
- 2024-12-27JWT单点登录原理学习入门