等价于 编写一个程序来判断能否遍历完一个公差为b、周期为k的序列,代码如下

muye 发表于 1年前 · 关联问题 清扫房间

为什么b和k不互质,则无法遍历完整个序列? 当公差b和周期k不互质时,就会存在一些位置无法被遍历到,因为有些位置的步长是公差b的倍数,而周期k也是公差b的倍数,因此在遍历的过程中,就会跳过一些位置,导致无法遍历完整个序列。举个例子,如果公差为2,周期为4,那么遍历的过程中只会经过序列中的偶数位置,无法经过奇数位置,因为奇数位置的步长是2,而周期4也是2的倍数,因此无法覆盖到奇数位置。而当公差b和周期k互质时,步长为b的序列可以覆盖到所有位置,因为在k次遍历后,步长为b的位置序列会回到起点,从而能够覆盖到所有位置。

#include <iostream> #include<cstring> #include<iomanip> #include<math.h> using namespace std; int gcd(int a,int b) { while(b!=0) { int temp=a; a=b; b=temp%b; } return a; /*//用递归的辗转相除法,a,b过大栈会溢出 if(b==0) return a; else { int c=a%b; gcd(b,c); } */ } int main() { int k,a,b; cin>>k>>a>>b; int i=gcd(k,b); if(i==1) { cout<<"Yes"; }else { cout<<"No"; } }