首页 > 其他 > 详细

【BestCoder】#33

时间:2015-03-24 19:02:07      阅读:196      评论:0      收藏:0      [点我收藏+]

1001

首先读进来的时候把字母和数字都转换成0到35的数字,加起来直接取模,算出答案。 坑点是只有1个数的情况,还有答案等于0的时候也要输出一行一个0。

注意去掉前导0,因为求和过程也有可能产生0,所以求完和在去0。

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstdio>
#include <string>
#include <cstring>
#include <cmath>
#include <ctime>
#include <set>
using namespace std;
#define read() freopen("data.in", "r", stdin)
#define write() freopen("data.out", "w", stdout)
#define rep( i , a , b ) for ( int i = ( a ) ; i <  ( b ) ; ++ i )  
#define For( i , a , b ) for ( int i = ( a ) ; i <= ( b ) ; ++ i ) 
#define clr( a , x ) memset ( a , x , sizeof a )  
#define cpy( a , x ) memcpy ( a , x , sizeof a ) 
#define _max(a,b) ((a>b)?(a):(b))
#define _min(a,b) ((a<b)?(a):(b))
#define LL long long 
const int maxNumber=205;

int sum[maxNumber];
char s[maxNumber];

int main()
{
	//read();
	int n,b;
	while(cin>>n>>b)
	{	
		int temp = 0;
		clr(sum,0);
		while(n--)
		{
			scanf("%s",s);
			int len = strlen(s);
			reverse(s,s+len);
			for (int i = 0; i < len; ++i)
			{
				if (s[i]>=‘a‘&&s[i]<=‘z‘)
				{
					sum[i]+=(s[i]-‘a‘+10);
				}else
				{
					sum[i]+=s[i]-‘0‘;
				}
			}	
			temp = _max(temp,len);
		}
		for (int i = 0; i < temp; ++i)
		{
			sum[i] %= b;
		}
		while (temp > 1 && sum[temp-1]==0)
		{
			--temp;
		}
		for (int i = temp-1; i >= 0; --i)
		{
			if (sum[i] < 10)
			{
				printf("%d",sum[i] );
			}else
			{
				printf("%c",sum[i]-10+‘a‘ );
			}
		}
		printf("\n");
	}
    return 0;
   
}

  

【BestCoder】#33

原文:http://www.cnblogs.com/acmsummer/p/4363543.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!