zoukankan      html  css  js  c++  java
  • PAT Have Fun with Numbers 大整数运算

    题目:https://pintia.cn/problem-sets/17/problems/263

    题解:https://www.liuchuo.net/archives/2151

    题解代码:

    #include <stdio.h>
    #include <string.h>
    int book[10]; //萝卜坑,记录0-9数字出现的个数
    int main()
    {
    	char num[20];
    	scanf("%s", num);
    	int len = strlen(num);
    	int carry = 0; //进位
    	//乘以2
    	for (int i = len - 1; i >= 0; i--)
    	{
    		int temp = num[i] - '0';
    		book[temp]++;
    		temp = temp * 2 + carry;
    		carry = 0;
    		if (temp >= 10)//大于等于!
    		{
    			carry = temp / 10;
    			temp = temp % 10;
    		}
    		num[i] = temp + '0';
    		book[temp]--;
    	}
    	//打印结果
    	bool isOriginal = true;
    	for (int i = 0; i < 10; i++)
    	{
    		if (book[i] != 0)
    		{
    			isOriginal = false;
    			break;
    		}
    	}
    	printf("%s
    ", isOriginal && carry == 0 ? "Yes" : "No"); //原位数字相同、且无进位
    	if (carry > 0)
    	{
    		printf("%d", carry);
    	}
    	printf("%s
    ", num);
    	return 0;
    }
    

     

    问题:无法自主设计完备的测试用例。

    自解代码(未通过全部用例):

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    //GetPermutation();
    int main(){
    
    	unsigned long long int x;
    	cin>>x;
    	unsigned long long int dx = x*2; 
    	unsigned long long int dis = dx;
    
    	vector<int> a(20);
    	int c=0;
    	while(x>0){
    		int t = x%10;
    		x= x/10;
    		a.insert(a.begin()+c,t);
    //		cout<<t<<endl;
    	}
    
    	c=0;
    	vector<int> b(20);
    	while(dx>0){
    		int t = dx%10;
    		dx= dx/10;
    		b.insert(b.begin()+c, t);
    //		cout<<t<<endl;
    	}
    	sort(a.begin(),a.end());
    	sort(b.begin(),b.end());
    	if(a.size()==b.size()) {
    		bool f = true;
    		for(unsigned int i=0;i<a.size();i++){
    			if(a[i]!=b[i]){
    				cout<<"No"<<endl;
    				f=false;
    				break;
    			}
    		}
    		if(f){
    			cout<<"Yes"<<endl;
    			
    		}
    	}else{
    		cout<<"No"<<endl;
    	}
    	cout<<dis<<endl;
    
    	return 0;
    }
    

    自解结果:

    参考:

    C++ 基础类型 https://en.cppreference.com/w/cpp/language/types

    C++ vector insert() https://www.geeksforgeeks.org/vector-insert-function-in-c-stl/

  • 相关阅读:
    【MVC】过滤器
    【C#】开发可以可视化操作的windows服务
    【JS】导出table到excel,同时兼容FF和IE
    【.Net】文件并发(日志处理)--队列--Redis+Log4Net
    【.Net】从.NET平台调用Win32 API
    『录』最全前端资源汇集
    $.ajax()方法详解
    mvc的视图中显示DataTable的方法
    C# 对XML基本操作总结
    Ninject简介
  • 原文地址:https://www.cnblogs.com/simon-chou/p/13366558.html
Copyright © 2011-2022 走看看