zoukankan      html  css  js  c++  java
  • 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

    附上一张截图:




  • 相关阅读:
    关于如何实现接口IComparer以实现自己需要的排序规则
    随机移动
    关于资源版本管理的问题
    Unity3D内部脚本编程入门
    删除GameObject上除了Quality子物体之外其他子物体的组件(但不删除transform)
    资料
    c# 基础知识点
    c# 匿名方法(委托)
    git
    一篇关于Unity3D优化的文章,翻译脚本优化部分
  • 原文地址:https://www.cnblogs.com/qie-wei/p/10160279.html
Copyright © 2011-2022 走看看