C ++程序查找两个系列的第一个碰撞点

在本文中,我们将讨论一个程序来查找第一个碰撞点,即两个系列都具有的第一个点。

在这种情况下,我们将得到五个变量“ a”,“ b”,“ c”,“ d”和“ n”。我们必须从每个具有n位的数字中创建两个算术级数序列

b, b+a, b+2a, ….b+(n-1)a
d, d+c, d+2c, ….. d+(n-1)c

然后找到两个给定系列的第一个共同点。

为了解决这个问题,我们将在第一个系列中创建数字。对于每个数字,我们将检查它是否大于或等于第二个序列的第一个数字,以及该数字和“ d”之间的差是否可被c整除。如果同时满足这两个条件,则结果将是第一个序列中的当前数字。

示例

#include<bits/stdc++.h>
using namespace std;
void calc_series(int a, int b, int c, int d, int n) {
   int x , flag = 0;
   //创建第一个系列的编号
   for (int i = 0; i < n; i++) {
      x = b + i * a;
      //检查它是否存在于第二个系列中
      if ((x - d) % c == 0 and x - d >= 0){
         cout << "First collision point : "<< x << endl;
         flag = 1;
         break;
      }
   }
   if(flag == 0) {
      cout << "No collision point exists" << endl;
   }
}
int main() {
   int a = 16;
   int b = 9;
   int c = 23;
   int d = 19;
   int n = 78;
   calc_series(a, b, c, d, n);
   return 0;
}

输出结果

First collision point : 249