【1023】Have Fun with Numbers (20 分)

简介: 【1023】Have Fun with Numbers (20 分)【1023】Have Fun with Numbers (20 分)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string>
#include<algorithm>  
#include<map>
#include<vector>
#include<queue> 
#include<memory.h>  
//PS:缺少上面这个头文件,memset会报错,或者用string.h那个
using namespace std;  
//key:count[]存放0~9每个数字出现次数,原整数出现的数字令其对应count[k]+1
//新整数出现的数字令其对应count[k]-1,最后看count[]是否全0
struct bign{
  int d[21];
  int len;
  bign(){  //构造函数
    memset(d,0,sizeof(d));
    len=0;
  }
};
bign change(string str){  //以字符串型读入整数,转换成bign
  bign a;
  a.len=str.length();
  for(int i=0;i<a.len;i++){
    a.d[i]=str[a.len-i-1]-'0';
  }
  return a;
}
bign multi(bign a,int b){  //高精度乘法
  bign c;
  int carry=0;  //进位
  for(int i=0;i<a.len;i++){
    int temp=a.d[i]*b+carry;
    c.d[c.len++]=temp%10;  //个位作为该位的结果
    carry=temp/10;  //高位部分作为新的进位
  }
  while(carry!=0){  //和加法不一样,乘法的进位可能不止1位,因此用while
    c.d[c.len++]=carry%10;
    carry/=10;
  }
  return c;
}
bool Judge(bign a,bign b){  //判断b的所有位是否是a的某个排列
  if(a.len != b.len) return false; //若长度不同,则肯定是false
  int count[10]={0}; //计数0~9的出现次数
  for(int i=0;i<a.len;i++){
    count[  a.d[i] ]++;   //数位a.d[i]对应的count值加1
    count[  b.d[i] ]-- ;    //数位b.d[i]对应的count值减1
  }
  for(int i=0;i<10;i++){  //判断0~9出现次数是否都为0
    if(count[i]!=0){ //只要有一个数字的出现次数不为0,则返回false
      return false;
    }
  }
  return true;   
}
void print(bign a){//输出bign 
  for(int i=a.len-1;i>=0;i--){
    printf("%d",a.d[i]);
  }
}
int main(){   
  string str;
  getline(cin,str);
  bign a=change(str);  //转换为bign
  bign mul=multi(a,2);  //计算a*2
  if(Judge(a,mul) == true ) printf("Yes\n");
  else printf("No\n");
  print(mul);  //输出结果
  system("pause");
    return 0;   
}
相关文章
|
5月前
|
语音技术 Python
语音识别,continue和break的使用,循环综合案例,完成发工资案例,函数的初体验,len()是内置好的函数,def 函数名 def xxx(),函数的定义 def xxx() ,调用函数
语音识别,continue和break的使用,循环综合案例,完成发工资案例,函数的初体验,len()是内置好的函数,def 函数名 def xxx(),函数的定义 def xxx() ,调用函数
|
6月前
1043 输出PATest (20 分)
1043 输出PATest (20 分)
设计函数fun,其功能是:找出成绩最低的学生记录,返回
设计函数fun,其功能是:找出成绩最低的学生记录,返回
|
C语言
C语言求x的y次方,fun函数实现x的y次方的计算,main函数中调用fun函数
C语言求x的y次方,fun函数实现x的y次方的计算,main函数中调用fun函数
224 0
初学算法之---pta fun with numbers
初学算法之---pta fun with numbers
|
监控 Serverless API
Fun
Fun, Fun 是 have Fun with Serverless 的缩写,是一款 Serverless 应用开发的工具,可以帮助用户定义函数计算、API 网关、日志服务等资源。
556 0
Fun
用int main检验任意函数,如(func)函数
用int main检验任意函数,如(func)函数
101 0
用int main检验任意函数,如(func)函数