幸运数字

时间: 1ms        内存:128M

描述:

多组数据!!!
lls非常喜欢数字4和7,看到一个数字他就想快速计算出因子里面分别有几个4和7,但是智商捉急的他总是要算很久,喜欢编程的你能够帮助他吗?

输入:

第一行一个整数n(3<=n<=2^60),表示给定的数字。

输出:

两个用空格隔开的数字,分别表示给定数字的因子中4和7的个数。

示例输入:

112

示例输出:

2 1

提示:

参考答案(内存最优[1120]):

#include<stdio.h>
typedef long long ll;
int main()
{
    ll n;
    while(~scanf("%lld",&n)){
        ll ans1=0,ans2=0;
        if(n==0){
            printf("0 0\n");
            continue;
        }
        for(;;){
            if(n%4==0){
                n/=4;
                ans1++;
            }else if(n%7==0){
                n/=7;
                ans2++;
            }else{
                printf("%lld %lld\n",ans1,ans2);
                break;
            }
        }
    }
    return 0;
    }

参考答案(时间最优[1]):

#include <bits/stdc++.h>
using namespace std;
#define rep(i,a,b) for(int i=a;i<=b;i++)
typedef long long ll;
int a[200000];
int main()
{
    ll n;ios::sync_with_stdio(0);cin.tie(0);
  while(cin>>n)
    {
        ll tem=n;
        int a2=0;
        int a7=0;
        while(tem)
        {
            if(tem%4==0)
            a2++;
            else break;
            tem=tem/4;
        }
        tem=n;
        while(tem)
        {
            if(tem%7==0)
            a7++;
            else break;
            tem/=7;
        }
        cout<<a2<<" "<<a7<<endl;
    }
    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。