• hdu 2057 A + B Again


    题目

    不得不说今天做的题怎么都这么坑呢。这道题若是要一个标准的程序员来做的话,就相当于hdu上面的第一个题一样,毫无意义。。

    但是我居然WA了,看到这个题的第一反应就是,要把16# ——>10#,然后再把10# ——>16#,来做,以为这是一个进制的转换,最后看博客才知道,原来可以直接输入输出16#,不禁觉得自己好傻啊 ^-^ 

    下面是刚开始愚蠢的做法:

    #include <stdio.h>
    #include <math.h>
    
    
    void p3(int n)//10#->16#
    {
    	int a[20],i=0;
    	int flag = 0;
    	if(n<0) { flag = 1; n = -n;}
    	if(n==0) printf("0");
    	while(n!=0)
    	{
    		a[i++]=n%16;
    		if(a[i-1]>=10)
    			a[i-1]=a[i-1]-10+65;
    		n=n/16;
    	}
    	if(flag==1) printf("-");
    	for(i=i-1;i>=0;i--)
    		if(a[i]>=10)
    		printf("%c",a[i]);
    		else
    			printf("%d",a[i]);
    	printf("
    ");
    }
    
    
    
    int q3(char b[])//16#->10#
    {
    	int i=0,sum=0;
    	int flag = 0;
    	for(i=0;b[i]!='';i++)
    	{
    		if(b[i]>='A'&&b[i]<='F')
    			sum=sum*16+b[i]-55;
    		else if(b[i]>='0'&&b[i]<='9')
    			sum=sum*16+b[i]-'0';
    		else 
    		{
    			if(b[i]=='-')
    			flag = 1;
    		}
    			
    	}
    		if(flag == 1)
    			return -sum;
    		else return sum;
    }
    
    int main()
    {
    	char a[20],b[20];
    	while(~scanf("%s%s",a,b))
    	{
    		int sum1 = q3(a);
    		int sum2 = q3(b);
    	//	printf("sum1 = %d sum2 = %d
    ",sum1,sum2);
    		int sum = sum1+sum2;
    		p3(sum);
    	}
    
    	return 0;
    }

    下面是正确的代码:

    #include<stdio.h>
    int main()
    {
    	__int64 a,b,c;
    	while(~scanf("%I64X %I64X",&a,&b))
    	{
    		c = a+b;
    		if(c>=0) printf("%I64X
    ",c);
    		else printf("-%I64X
    ",-c);
    	}
    	return  0;
    }

    下面是别人的博客:

    http://blog.csdn.net/tigerisland45/article/details/51828341

    附上一张截图:




  • 相关阅读:
    图形验证码---pillow
    vue富文本编辑器vue-quill-editor
    django邮件发送
    Django REST Framework JWT
    jwt验证
    使用django的用户表进行登录管理
    [转]CSRF漏洞详细说明
    Django框架10
    Django框架09
    Django框架08
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160279.html
Copyright © 2020-2023  润新知