幸运数字
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。