zoukankan      html  css  js  c++  java
  • HUD 1230 火星A+B

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1230

    因为输出有问题,一直WA。。

    大数+进制问题

    数组一定要开大点。注意当两个要相加的数不一样长时的处理

    #include <stdio.h>
    #include <math.h>
    #include <string.h>
    #include <stdlib.h>
    int prime[25];
    
     void isprime(void)
    {
    	int i;
    	int j=1;
    	int t;
    
    	bool sign;
    	for (i=0;i<=25;i++)
    		while(++j)
    		{
    			sign=true;
    			for(t=2;t<=sqrt((double)j);t++)
    			{
    				if(j%t==0)
    				{
    					sign=false;
    					break;
    				}
    			}
    			if(sign)
    			{
    				prime[i]=j;
    				break;
    			}
    			continue;
    		}
    }
    
    int main()
    {
    	isprime();					//打素数表
    
    	char cha[200];
    	char chb[200];
    	int ans[101];
    	char tem[50];				//暂存火星数字的一位
    	int temp;
    	int sign;						//进位标志
    	int i;
    	int t;
    	int k;
    	int la,lb;
    	while(scanf("%s%s",cha,chb)&&(cha[0]!='0'||chb[0]!='0'))		//a或b为零时结束
    	{
    		memset(ans,0,sizeof(ans));
    		sign=0;
    		la=strlen(cha);
    		lb=strlen(chb);
    		for (i=la-1,t=la,k=0;i>=0;i--)
    		{
    			if(cha[i]==','||i==0)
    			{
    				if(i!=0)
    				{
    					strncpy(tem,cha+i+1,t-i-1);			//把火星数字的一位复制到tem中
    					tem[t-i-1]='';
    				}
    				else
    				{
    					strncpy(tem,cha+i,t-i);	
    					tem[t]='';
    				}
    				t=i;
    				ans[k++]=atoi(tem);					//倒序
    			}
    
    		}
    		for (i=lb-1,t=lb,k=0;i>=0;i--)
    		{
    			if(chb[i]==','||i==0)
    			{
    				if(i!=0)
    				{
    					strncpy(tem,chb+i+1,t-i-1);
    					tem[t-i-1]='';
    				}
    				else
    				{
    					strncpy(tem,chb+i,t-i);
    					tem[t]='';
    				}
    				t=i;				
    				temp=atoi(tem);
    				ans[k]+=(temp+sign);
    				sign=ans[k]/prime[k];
    				ans[k]=ans[k]%prime[k];
    				k++;
    
    			}
    
    		}
    		while(sign)									//处理进位
    		{
    			ans[k]+=sign;
    			sign=ans[k]/prime[k];
    			ans[k]=ans[k]%prime[k];
    			k++;
    		}
    		sign=false;
    		for (i=100;i>=0;i--)				//倒序,从第一个不为0的数开始输出
    		{
    			if(ans[i]!=0&&!sign)
    				sign=true;
    			if(sign&&i!=0)
    				printf("%d,",ans[i]);
    			if (sign&&i==0)
    				printf("%d
    ",ans[i]);
    		}
    	
    
    
    
    	}
    	return 0;
    }


     

  • 相关阅读:
    mysql主从复制
    gitlab安装
    nginx新加模块编译
    flask编写prometheus采集指标脚本
    powerdns的安装
    grafana中prometheus的查询语句
    python编写prometheus的监控指标
    maven常用命令参数
    flask架构中的方法学习
    Java命名规范
  • 原文地址:https://www.cnblogs.com/frankM/p/4399551.html
Copyright © 2011-2022 走看看