三元组
时间:2019-06-13
本文章向大家介绍三元组,主要包括三元组使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
也许更好的阅读体验
\(\mathcal{Description}\)
给定 \(n,k\),对于一 个三元组\((a, b, c)\),若合法则需要满足\(1 ≤ a, b, c ≤ n\),且两两元素之和均为\(k\)的倍数。
求不同的合法的三元组有多少个。
三元组的相应的任意一 位不同则认为他们不同。
\(\mathcal{Solution}\)
设 \(a=x_1k,b=x_2k,c=x_3k\)
\(x1,x2,x3\in [0,n/k]\) (包括小数)
则有
\(a+b=(x_1+x_2)k\)
\(b+c=(x_2+x_3)k\)
\(a+c=(x_1+x_3)k\)
即
\(x_1+x_2\in Z\)
\(x_2+x_3\in Z\)
\(x_1+x_3\in Z\)
所以可以知道
- 若\(x1,x2,x3\in Z\)
则\(x1,x2,x3\)有\(n/k\)种选择- 当三个数字全部不相同 有\(C_{n/k}^3\)种搭配,每种搭配有6种排列方式
- 当三个数字有两个相同 有\(C_{n/k}^2\)种搭配,每种搭配有6种排列方式
- 当三个数字全部都相同 有\(n/k\)种搭配,每种搭配有1种排列方式
- 当三个数字全部不相同 有\(C_{n/k}^3\)种搭配,每种搭配有6种排列方式
- 若\(x1,x2,x3∉ Z\)
又\(\because x1,x2,x3\)两两相加为整数
\(∴x1,x2,x3=ik+\frac{k}{2},i\in Z\)
此时条件\(k\%2==0\)
则\(x1,x2,x3\)有\(n/\frac{k}{2}-n/k\)种选择
接下来的计算同上
代码
/*******************************
Author:Morning_Glory
LANG:C++
Created Time:2019年06月13日 星期四 08时19分25秒
*******************************/
#include <cstdio>
#include <fstream>
#define ll long long
using namespace std;
int n,k,tim,hal;
ll ans;
ll C3 (int n) { return 1ll*n*(n-1)/2*(n-2)/3; }
ll C2 (int n) { return 1ll*n*(n-1)/2; }
int main()
{
scanf("%d%d",&n,&k);
tim=n/k;
if ((k-1)&1){
hal=n/(k/2)-tim;
ans+=6*C3(hal)+6*C2(hal)+hal;
}
ans+=6*C3(tim)+6*C2(tim)+tim;
printf("%lld\n",ans);
return 0;
}
原文地址:https://www.cnblogs.com/Morning-Glory/p/11015533.html
- java中 == 与 equal 的区别
- python基础知识——字符串
- python 实现数据降维推荐系统(附Python源码)
- MYSQL数据导出与导入,secure_file_priv参数设置
- numpy 参数(一) —— np.linalg
- 关于查看dba_data_files的一个小问题(r7笔记第72天)
- 一则备库CPU报警的思考(r7笔记第69天)
- Java设计模式-观察者模式
- 今天处理的三个小问题——20160120(r7笔记第84天)
- 主备切换的准备工作(r7笔记第83天)
- Java设计模式-外观模式
- Java设计模式-组合模式
- 使用shell批量监控磁盘坏块(二) (r7笔记第80天)
- JavaWeb10-request&response你不得不学(1)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法