当前位置:操作系统 > 安卓/Android >>

hdu 2116 Has the sum exceeded

判断两个数的和是否溢出

k=64时单独考虑

 

[cpp]
# include <stdio.h>  
# include <math.h>  
int main() 

    int k; 
    __int64 a,b,c,d; 
    while(scanf("%d",&k)!=EOF) 
    { 
        scanf("%I64d%I64d",&a,&b); 
        c=(__int64)(pow(2,k-1)+0.001)-1; 
        d=(-1)*(__int64)(pow(2,k)+0.001); 
        if((a<0&&b>0)||(a>0&&b<0)) 
        { 
            puts("WaHaHa"); 
            continue; 
        } 
        if(k==64)   
        {   
            if(a>0&&b>0&&c-a<b)   
                printf("Yes\n");   
            else if(a<0&&b<0&&d-a>b)   
                printf("Yes\n");   
            else printf("WaHaHa\n");  
            continue; 
        }   
        if(a>0&&c-a<b) 
            printf("Yes\n"); 
        else if (a<0&&d-a>=b) 
            printf("Yes\n"); 
        else 
            printf("WaHaHa\n"); 
    } 
    return 0; 

# include <stdio.h>
# include <math.h>
int main()
{
    int k;
    __int64 a,b,c,d;
    while(scanf("%d",&k)!=EOF)
    {
        scanf("%I64d%I64d",&a,&b);
  c=(__int64)(pow(2,k-1)+0.001)-1;
  d=(-1)*(__int64)(pow(2,k)+0.001);
        if((a<0&&b>0)||(a>0&&b<0))
        {
            puts("WaHaHa");
            continue;
        }
  if(k==64) 
        { 
            if(a>0&&b>0&&c-a<b) 
                printf("Yes\n"); 
            else if(a<0&&b<0&&d-a>b) 
                printf("Yes\n"); 
            else printf("WaHaHa\n");
   continue;
        } 
        if(a>0&&c-a<b)
   printf("Yes\n");
  else if (a<0&&d-a>=b)
            printf("Yes\n");
        else
            printf("WaHaHa\n");
    }
    return 0;
}
 

 

判断两个数和的位数

 

 

 

 

[cpp]
#include<stdio.h>  
#include<string.h>  
__int64 a[70],b[70];  
int main() 

    __int64 d,c; 
    int num,k,i,flag,j; 
    while(scanf("%d",&k)!=-1) 
    { 
        flag=0; 
        scanf("%I64d%I64d",&c,&d); 
        num=0; 
        memset(a,0,sizeof(a)); 
        memset(b,0,sizeof(b)); 
        if((c<0&&d>0)||(c>0&&d<0)) 
        { 
            puts("WaHaHa"); 
            continue; 
        } 
        if(c<0&&d<0) 
        {c=-c;d=-d;flag=1;} 
        while(c) 
        { 
            a[num++]=c%2; 
            c=c/2; 
        } 
        num=0; 
        while(d) 
        { 
            a[num]+=d%2; 
            num++; 
            d/=2; 
        } 
        for(i=0;i<68;i++) 
        { 
            a[i+1]+=a[i]/2; 
            a[i]=a[i]%2; 
        } 
        for(i=68;i>=0;i--) 
            if(a[i]!=0)break; 
            if(i==k-1&&flag==1) 
            { 
              &n

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,