力扣319:
第二题:2470. 最小公倍数为 K 的子数组数目 - 力扣(Leetcode)
枚举,每次向后一个位置并判断当前子数组的最小公倍数是不是k 两个数求最小公倍数。
class Solution {
public:
int subarrayLCM(vector<int>& nums, int k) {
int ans = 0;
int n = nums.size();
for(int i = 0; i < n; i ++)
{
int temp = nums[i];
for(int j = i; j < n; j ++)
{
temp = temp * nums[j] / gcd(temp, nums[j]);
if(temp == k)
ans ++;
else if(temp > k) //**********
break;
}
}
return ans;
}
int gcd(int a, int b)
{
while(b != 0)
{
int temp = a % b;
a = b;
b = temp;
}
return a;
}
};
acw:
挨个赋值”ROYG”,然后将最后的三个(与0号小朋友首尾相接的那几个)特殊处理一下。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
string s = "GBIV";
int n;
cin >> n;
cout << "ROY";
n -= 3;
while (n -- )
cout << s[n % 4];
cout << endl;
return 0;
}