昌吉回族自治州网站建设_网站建设公司_jQuery_seo优化
2026/1/17 9:16:59 网站建设 项目流程

短视频软件代码,改进for循环时间复杂度的一种办法

找到n个数中 有几对 两个数之和为7的倍数

//(相比两层for循环时间复杂度仅为O(N)的改进算法) 
#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
#include<cstdio>
#include<queue>
#include<stack> 
#include<set>
#include<map> 
#include<vector> 
using namespace std;
int main(){int n;//要输入n个数来找和为7的数的数对 scanf("%d",&n);long long num[20];//定义一个数组去存%7取余后余数为i的个数,20是随意定的,>=7就行,因为任何数对7取余都小于7 for(int i = 0; i < 20; i++){num[i] = 0;//初始化一下,%7余数为i的个数都是0 }for(int i = 1; i <= n; i++){int x;//输入n个数 scanf("%d",&x);num[x%7]++;//记录余数为某个数i的个数,更新对应的num[i]的值来记录 } long long sum = 0;sum += (num[0] *(num[0] - 1)/2);//对7取余为0的比较特殊(因为14+14,7+7等满足条件但却不是一对数(应为不等的一对数))//故满足条件的数是7,14,21等排列组合得到的个数为n*(n-1)/2 sum += (num[1] * num[6]);//对7取余为1的个数与对7取余为6的个数相乘得到 1和6 总对数(对7取余为1的数与对7取余为6的数相加肯定是7的倍数) sum += (num[2] * num[5]);//同理 sum += (num[3] * num[4]);//同理printf("%lld\n",sum); return 0;
} 

以上就是短视频软件代码,改进for循环时间复杂度的一种办法, 更多内容欢迎关注之后的文章

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询