Problem E: 爱你多少年呢

Problem E: 爱你多少年呢

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 60  Solved: 15
[Submit][Status][Web Board]

Description

      一个外院的才子爱上了一位计院的美女,他苦苦追求了好长时间,计院的美女总是不冷不热,唉!!纠结啊,才子说:给我次机会吧我会把握住的,美女想了想:好吧,给了才子两个数,27,11才子想了想,说:我不仅会爱你四年,还会爱你一万年。美女笑了,这事成了。原来搞计算机的只认识10,那俩数是110111011,就是把两个数变成二进制形式,把两个数从低到高每一对应位相比较若都是1则代表一年,然后把这些年相加,若没有对应位(101111011第二个数最高位‘1’没有对应位),则是1就为1年,否则为0,,然后把这些年数加起来按要求输出。

Input

有多组测试数据 

每组测试数据输入两个整数

Output

 根据

love you N years

的格式输出,N为计算出的年数

Sample Input

27 11

Sample Output

love you 4 years

解题思路:

先化成二进制,然后,比较,如果长度不相等,则继续比较。


代码:

#include <iostream>
#include <string.h>
 
using namespace std;
 
//函数十进制转二进制,返回二进制位数
int dec2bin(int n, int *a)
{
    int nFlag = 0;
    int nCount = 0;//有多少位
    while (n)
    {
        a[nFlag] = n % 2;
        n /= 2;
        ++nCount;
        ++nFlag;
    }
 
    return nCount;
}
 
int main()
{
    int nNum1, nNum2;
    int anNum1[100], anNum2[100];//binary
 
    while (cin >> nNum1 >> nNum2)
    {
        memset(anNum1, 0, sizeof(anNum1));
        memset(anNum2, 0, sizeof(anNum2));
        int nCount1, nCount2;
        int nYears = 0;
        nCount1 = dec2bin(nNum1, anNum1);
        nCount2 = dec2bin(nNum2, anNum2);
 
        int i;
        /*测试输出
        for (i = 0; i < nCount1; ++i)
            cout << anNum1[i] << endl;
            */
 
        for (i = 0; i < nCount1 && i < nCount2; ++i)
        {
            if (anNum1[i] == 1 && anNum2[i] == 1)
            {
                ++nYears;
            }
        }
        for (; i < nCount1 || i < nCount2; ++i)
        {
            if (anNum1[i] == 1 || anNum2[i] == 1)
            {
                ++nYears;
            }
        }
 
        cout << "love you " << nYears << " years" << endl;
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值