zoukankan      html  css  js  c++  java
  • 编程题目: PAT 1017. A除以B (20)

    1017. A除以B (20)

    时间限制
    100 ms
    内存限制
    32000 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数。你需要输出商数Q和余数R,使得A = B * Q + R成立。

    输入格式:

    输入在1行中依次给出A和B,中间以1空格分隔。

    输出格式:

    在1行中依次输出Q和R,中间以1空格分隔。

    输入样例:
    123456789050987654321 7
    
    输出样例:
    17636684150141093474 3
            本题由于给的A位数可以很长,所有简单的除法是绝不可行的,可以考虑采用模拟手工除法来解决。要特别注意的一点是,对于A长度为1位,且比B晓得情况的考虑,参考代码如下。

    /*
    http://pat.zju.edu.cn/contests/pat-b-practise/1017 A除以B (20)
    */
    #include<iostream>
    #include<string>
    using namespace std;
    
    int main()
    {
    	string A,Q;
    	int B,R=0;
    	cin>>A>>B;
    	int length = A.length();
    	int temp = A[0]-'0';
    	if(temp>=B)
    		Q.push_back(temp/B+'0');
    	for(int i =1;i<length;i++)
    	{
    		R = temp%B;
    		temp = R*10+ A[i]-'0';
    		Q.push_back(temp/B+'0');
    	}
    	R = temp%B;
    	if(length ==1 && A[0]-'0'<B)//特别注意,当输入值A只有一位且比B小的情况
    		cout<<"0 "<<A[0]-'0';
    	else
    		cout<<Q<<" "<<R;
    
    	system("pause");
    	return 0;
    }



  • 相关阅读:
    POJ 2411 Mondriaan's Dream
    POJ 2505 A multiplication game
    HDOJ(HDU) 3949 XOR
    雅礼集训DAY 6 T1 xmasdag
    bzoj 2159: Crash 的文明世界
    如何查看Ubuntu版本
    Ubuntu如何安装谷歌Chrome浏览器
    使用nano编辑器进行查找和替换
    Ubuntu修改用户和root密码
    Anaconda/Conda创建环境时报错的解决方案
  • 原文地址:https://www.cnblogs.com/f8master/p/3826055.html
Copyright © 2011-2022 走看看