您的位置:首页 > 其它

HDU 5186 || 模拟map

2015-03-15 17:04 302 查看
模拟不进位的加法。

昨天晚上比赛的时候脑子估计被驴踢了 = = 一直map不出来,今早map出来了g++,超时,c++过,

加了各手写输入,结果c++挂了,g++过,一题水题反正把我弄得很坎坷,把危险代码该了一下这下都过了。

还是不懂g++,和c++的不同之处,有空了解一下,后来把代码改成最土的那个模拟方法过了。

果然只求过就好了,不要弄太那啥 = = 都是自己作。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
int ans[300];
char str[300];
int n,b;
map<char,int>toINT;
map<int,char>toCHAR;
int i,j;
void init()
{
for( i = 0;i< 10;++i )
{
toINT[ '0' + i ] = i;
toCHAR[ i ] = '0' +i;
}
for( i = 0; i< 26; ++i )
{
toINT[ 'a' + i ] = i+10;
toCHAR[ i + 10 ] = 'a' + i;
}
}
int main()
{
init();
while( ~scanf("%d %d",&n,&b) )
{
memset(ans,0,sizeof(ans));
int ml = 0;
str[0] = '\0';
while( n-- )
{
scanf("%s",str);

int len = strlen(str)-1;
ml = ml > len? ml : len;
for( i = len ,j=0; i>=0 ;--i,j++ )
ans[ j ] = ( toINT[str[i]] + ans[j] ) %b;

}
for( i = ml; i>=0 ; --i )
if( ans[i] !=0)
break;
if( i < 0)
puts("0");
else
{
for(;i>=0;--i)
putchar( toCHAR[ ans[i] ] );
puts("");
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: