zoj 3167 Find 7 Faster Than John Von Neumann
2017-04-04 19:45
190 查看
Find 7 Faster Than John Von Neumann
It was said that when testing the first computer designed by von Neumann, people gave the following problem to both the legendary professor and the new computer: If the 4th digit of 2^n is 7, what is the smallest n? The machine and von
Neumann began computing at the same moment, and von Neumann gave the answer first.
Now you are challenged with a similar but more complicated problem: If the K-th digit of M^n is 7, what is the smallest n?
Input
Each case is given in a line with 2 numbers: K and M (< 1,000).
Output
For each test case, please output in a line the smallest n.
You can assume:
The answer always exist.
The answer is no more than 100.
Sample Input
Sample Output
【分析】已知K,M,求使得Mn 的第K位是7的最小n
大数乘法,用数组模拟
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[300],b[300];
void mul(int i){
int j,k;
for(j=0;j<300;j++)
b[j]*=i;
for(i=k=0;i<300;i++){
j=(b[i]+k)/10;
b[i]=(b[i]+k)%10;
k=j;
}
}
int main(){
int k,m;
while(~scanf("%d%d",&k,&m)){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
int p=m;
int ans=1;
for(int i=0;p;i++){
a[i]=b[i]=p%10;
p/=10;
}
while(a[k-1]!=7){
mul(m);
for(int i=0;i<300;i++)
a[i]=b[i];
ans++;
}
printf("%d\n",ans);
}
return 0;
}
It was said that when testing the first computer designed by von Neumann, people gave the following problem to both the legendary professor and the new computer: If the 4th digit of 2^n is 7, what is the smallest n? The machine and von
Neumann began computing at the same moment, and von Neumann gave the answer first.
Now you are challenged with a similar but more complicated problem: If the K-th digit of M^n is 7, what is the smallest n?
Input
Each case is given in a line with 2 numbers: K and M (< 1,000).
Output
For each test case, please output in a line the smallest n.
You can assume:
The answer always exist.
The answer is no more than 100.
Sample Input
3 2 4 2 4 3
Sample Output
15 21 11
【分析】已知K,M,求使得Mn 的第K位是7的最小n
大数乘法,用数组模拟
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int a[300],b[300];
void mul(int i){
int j,k;
for(j=0;j<300;j++)
b[j]*=i;
for(i=k=0;i<300;i++){
j=(b[i]+k)/10;
b[i]=(b[i]+k)%10;
k=j;
}
}
int main(){
int k,m;
while(~scanf("%d%d",&k,&m)){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
int p=m;
int ans=1;
for(int i=0;p;i++){
a[i]=b[i]=p%10;
p/=10;
}
while(a[k-1]!=7){
mul(m);
for(int i=0;i<300;i++)
a[i]=b[i];
ans++;
}
printf("%d\n",ans);
}
return 0;
}
相关文章推荐
- ZOJ 3167 Find 7 Faster Than John Von Neumann
- zoj 3167 Find 7 Faster Than John Von Neumann
- ZOJ 3167 Find 7 Faster Than John Von Neumann
- zoj 3167 Find 7 Faster Than John Von Neumann
- ZOJ 3167 Find 7 Faster Than John Von Neumann
- Find 7 Faster Than John Von Neumann
- John von Neumann和Ulam
- zoj 1589 Professor John 尚有点小疑问
- zoj 3860 Find the Spy
- ZOJ 3432 Find the Lost Sock (异或的运用)
- zoj 3432 Find the Lost Sock
- ZOJ 2952 Find All M^N Please(数学啊 )
- ZOJ 3605 Find the Marble
- ZOJ 3605 Find the Marble(三维dp)
- zoj 3432 Find the Lost Sock(解决时间超时问题)
- ZOJ 3605-F - Find the Marble-DP
- stored-program Computer/von Neumann Architecture 冯诺依曼体系结构
- ZOJ 3605 Find the Marble
- 区分RISC,CISC,Harvard architecture,Von_Neumann_architecture
- Find the Marble ZOJ - 3605 概率dp