zoukankan      html  css  js  c++  java
  • PAT:1023. Have Fun with Numbers (20) AC

    #include<stdio.h>
    #include<string.h>
    char str[30];            //输入的数字
    int tmp[30];            //*2后逆序的数字
    
    int cntstr[10];            //输入数字0-9的个数
    
    int tmpI=0,jin=0;          //*2的时候的int数组下标和进位数
    void Double(char* str,int len1)
    {
      memset(tmp,0,sizeof(tmp));    //将str*2并按个位在左,高位在右方式存储
      
      for(int i=len1-1 ; i>=0 ; --i)
      {
        int now=jin+(str[i]-'0')*2;    //【skill】要变成数字,-'0'而不是+'0'
        tmp[tmpI++]=now%10;
        jin=now/10;
      }
      if(jin!=0)        //最后进位存在,则进,不存在,就不进
        tmp[tmpI++]=jin;
      
    }
    
    int main()
    {
      scanf("%s",str);
      int len1=strlen(str);
      Double(str,len1);
      bool tag=1;            //判断是否y n
      if(len1!=tmpI)
      {
        tag=0;
      }
      else
      {
        memset(cntstr,0,sizeof(cntstr));
        for(int i=0 ; i<len1 ; ++i)
          ++cntstr[str[i]-'0'];
        for(int i=0 ; i<tmpI ; ++i)
          --cntstr[tmp[i]];
        for(int i=0 ; i<10 ; ++i)
          if(cntstr[i]!=0)
          {
            tag=0;
            break;
          }
      }
      if(0==tag)
        printf("No
    ");
      else
        printf("Yes
    ");
      for(int i=tmpI-1 ; i>=0 ; --i)  //逆序输出正常数
        printf("%d",tmp[i]);
    
      return 0;
    }
  • 相关阅读:
    SQL_50题
    Java多线程之冰山一角
    概览
    Selector
    集群配置
    redis config
    分布式、集群
    redis相关技术总结
    redis scan扫描
    redis 单线程 多路io复用
  • 原文地址:https://www.cnblogs.com/Evence/p/4330235.html
Copyright © 2011-2022 走看看