水题4-6

题目描述

读入两个小于10000的正整数A和B,计算A+B。需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1。

 

 

 

输入

测试输入包含若干测试用例,每个测试用例占一行,格式为"A B K",相邻两数字有一个空格间隔。当A和B同时为0时输入结束,相应的结果不要输出。

 

 

 

输出

对每个测试用例输出1行,即A+B的值或者是-1。

 

 

 

样例输入
2 3 1
12 22 1
11 111 2
0 0 2
 

 

样例输出
5
-1
-1
 

 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

 

来源

2006年浙江大学计算机及软件工程研究生机试真题

 

#include<cstdio>
#include<cmath>
int main()
{
    int a, b,k;
    while(scanf("%d%d%d",&a,&b,&k) != EOF)
    {
        if(a == 0 && b == 0)
            break;
        int tmp = pow(10,k);
        if(a % tmp == b % tmp)
            printf("-1\n");
        else
            printf("%d\n",a + b);
    }
    return 0;
}

题目描述

守形数是这样一种整数,它的平方的低位部分等于它本身。
比如25的平方是625,低位部分是25,因此25是一个守形数。
编一个程序,判断N是否为守形数。

 

 

 

输入

输入包括1个整数N,2<=N<100。

 

 

 

输出

可能有多组测试数据,对于每组数据,
输出"Yes!”表示N是守形数。
输出"No!”表示N不是守形数。

 

 

 

样例输入
6
11
 

 

样例输出
Yes!
No!
 

 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

 

来源
 
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main()
{
    string s;
    while(cin >> s)
    {
        int x = 0;;
        for(int i = 0; i != s.size(); i ++)
        {
            x = x * 10 + s[i] - '0'; 
        }
        int y = x * x;
        int tmp = pow(10,s.size());
        if(y % tmp == x)
            cout << "Yes!" << endl;
        else
            cout << "No!" << endl;
    }
    return 0;
}

题目描述

写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5
 

 

输入

 两个小于1000000000的数

 

 

输出

 输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。

 

 

样例输入
24 65
42 66666
3 67
 

 

样例输出
66
180
39
 

 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

 

来源

2010年清华大学计算机研究生机试真题

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a,b;
    while(cin >> a >> b)
    {
        long long x = 0;
        for(int i = 0; i != a.size(); i ++)
        {
            for(int j = 0; j != b.size(); j ++)
            {
                x += (a[i] - '0') * (b[j] - '0');    
            }    
        }
        cout << x << endl;
    }
    return 0;
}

题目描述

输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < m <10)进制数。

 

 

 

输入

输入格式:测试输入包含若干测试用例。每个测试用例占一行,给出m和A,B的值。
当m为0时输入结束。

 

 

 

输出

输出格式:每个测试用例的输出占一行,输出A+B的m进制数。

 

 

 

样例输入
2 4 5
8 123 456
0
 

 

样例输出
1001
1103
 

 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

 

来源
#include<iostream>
using namespace std;
void trans_k(long long x, int k)
{
    if(x > 0)
    {
        trans_k(x / k, k);
        cout << x % k;
    }
}
int main()
{
    int k;
    long long a, b;
    while(cin >> k)
    {
        if(k == 0)
            break;
        cin >> a >> b;
        a += b;
        if(a != 0)
            trans_k(a ,k);
        else
            cout << "0";
        cout << endl;
    }
    return 0;
}

 

题目描述

求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

 

 

 

输入

输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。

 

 

 

输出

可能有多组测试数据,对于每组数据,输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

 

 

 

样例输入
4 123 10
 

 

样例输出
27
 

 

提示 [+]

*** 提示已隐藏,点击上方 [+] 可显示 ***

 

 

来源

2008年北京大学图形实验室计算机研究生机试真题

#include<iostream>
#include<string>
#include<cctype>
using namespace std;
void trans_y(long long a, int y)
{
    if(a > 0)
    {
        trans_y(a / y , y);
        int tmp = a % y;
        switch (tmp)
        {
            case 10: cout << "A"; break;
            case 11: cout << "B"; break;
            case 12: cout << "C"; break;
            case 13: cout << "D"; break;
            case 14: cout << "E"; break;
            case 15: cout << "F"; break;
            default:
                cout << tmp;
        }
    }
}
int main()
{
    int x,y;
    string s;
    while(cin >> x >> s >> y)
    {
        long long a = 0;
        for(size_t i = 0; i != s.size(); i ++)
        {
            if(isalpha(s[i]))
            {
                s[i] = toupper(s[i]);
                a = a * x + s[i] - 'A' + 10;
            }
            else
            {
                s[i] = s[i] - '0';
                a = a * x + s[i];
            }
        }
        if(a == 0)
            cout << "0";
        else
            trans_y(a,y);
        cout << endl;
    }
    return 0;
}

 

posted on 2013-04-06 22:48  lgy111  阅读(240)  评论(0编辑  收藏  举报

导航