HDU 5186 || 模擬map

模擬不進位的加法。

昨天晚上比賽的時候腦子估計被驢踢了 = = 一直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("");
        }

    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章