前几个号码是0的时候一开始忘了处理
把位数控制好就行了
QZ我是没管他们
然后就竟然过了
#include<iostream>#include<string.h>
#include<stdio.h>
#include<math.h>
#include<map>
using namespace std;
int hsh[10000000];
int trs(char a){
if(a>='A'&&a<='C'){
return 2;
}
if(a>='D'&&a<='F'){
return 3;
}
if(a>='G'&&a<='I'){
return 4;
}
if(a>='J'&&a<='L'){
return 5;
}
if(a>='M'&&a<='O'){
return 6;
}
if(a>='P'&&a<='S'){
return 7;
}
if(a>='T'&&a<='V'){
return 8;
}
if(a>='W'&&a<='Y'){
return 9;
}
return 0;
}
int main(){
int T;
char str[20];
cin>>T;
memset(hsh,0,sizeof(hsh));
while(T--){
cin>>str;
int tmp,flg;
tmp=0;
flg=1000000;
int len=strlen(str);
for(int i=0;i<len;i++){
if(str[i]=='-'){
continue;
}
else{
if(str[i]<='9'&&str[i]>='0'){
tmp+=(str[i]-'0')*flg;
flg/=10;
}
else{
tmp+=trs(str[i])*flg;
flg/=10;
}
}
}
hsh[tmp]++;
}
int flag=1;
for(int i=0;i<=9999999;i++){
if(hsh[i]==0){
continue;
}
if(hsh[i]>=2){
flag=0;
for(int t=100;t>=1;t/=10){
if(i/10000<t){
cout<<"0";
}
}
if(i/10000!=0){
cout<<i/10000;
}
cout<<"-";
for(int t=1000;t>=1;t/=10){
if(i%10000<t){
cout<<"0";
}
}
if(i%10000!=0){
cout<<i%10000;
}
cout<<" "<<hsh[i]<<endl;
}
}
if(flag){
cout<<"No duplicates."<<endl;
}
return 0;
}
解析特殊字符与数字组合的处理逻辑
本文探讨了在程序中如何正确处理由特殊字符和数字组成的字符串,特别是前几位为0的情况,通过实现一个函数来转换字符并计算组合值,确保数值正确性和唯一性。同时,代码示例展示了如何利用映射表和数学运算来优化处理过程。
236

被折叠的 条评论
为什么被折叠?



