当前位置: 首页 > news >正文

XTU-OJ 1187-Candy

WCB某天买了非常多的糖果并把它们分成N份,依次分别有1,2,3…,N个糖果。他想拿出其中的3份分给他的室友, 为了不让室友们闹意见,必须让这三份的糖果总数恰好能被三人均分。请问他一共有多少种不同的组合方案数?

输入

有多组输入数据,每组输入非负整数N(3≤N≤106),如果N=0,表示输入结束,这个样例不需要处理。

输出

每组数据输出一个整数独占一行,表示共有多少种方案,由于可能会很大,最后结果对109+7取模。

样例输入
3 
4 
5 
0
样例输出
1 
2 
4

解题思路:这题题目也说了就是一道排列组合题。 有哪些组合,可以让三份的糖果总数恰好能被三人均分?   

1:三份糖果 模3余数均为1 的 糖果;

2:三份糖果 模3余数均为2 的 糖果;

3:三份糖果 模3余数均为0 的 糖果;

4:一份糖果 模3余数为1 的 糖果 + 一份糖果 模3余数均为2 的 糖果 + 一份糖果 模3余数均为0 的 糖果。

最后对这4种情况的组合数求和就行了。   (注意取模 和 爆int )

AC代码:

#include <stdio.h>const int Mod = 1e9+7;
int compute(__int64 s){                         // 组合数公式 C(n,3)return (s*(s-1)*(s-2)/6) % Mod;
}int main()
{int n,N;__int64 x,y,z;__int64 ans1,ans2,ans3,ans;while (scanf("%d",&N) != EOF && N != 0){x = N/3;                                // x:3的倍数的 个数y = z = x;n = N%3;if (n == 1)         y += 1;             // y:模3余1的数 的个数else if (n == 2)    y += 1, z += 1;     // z:模3余2的数 的个数ans1 = compute(x);ans2 = compute(y);ans3 = compute(z);ans = (ans1+ans2+ans3+x*y*z) % Mod;printf("%I64d\n",ans);}return 0;
}

http://www.lryc.cn/news/206250.html

相关文章:

  • 基于 nodejs+vue城市轨道交通线路查询系统mysql
  • 电商时代,VR全景如何解决实体店难做没流量?
  • 操作系统-浅谈CPU与内存
  • K8s 部署 CNI 网络组件+k8s 多master集群部署+负载均衡
  • 若依微服务上传图片文件代理配置
  • 物联网与 Linux 的相爱相生
  • python自动化测试(一):操作浏览器
  • NReco.LambdaParser使用案例
  • 苹果IOS安装IPA, plist形式 Safari 浏览器点击安装
  • Django 注册及创建订单商品
  • 15、Python -- 阶段总结:变量与流程控制
  • 信息检索与数据挖掘 | 【实验】排名检索模型
  • 玩转AIGC:打造令人印象深刻的AI对话Prompt
  • uniapp vue国际化 i18n
  • Docker 启动远程服务访问不了
  • [ACTF2020 新生赛]Exec
  • Git(三).git 文件夹详解
  • esp32-S3 + visual studio code 开发环境搭建
  • 4.1 网络基础之网络IO
  • [100天算法】-和为 K 的子数组(day 39)
  • Leo赠书活动-02期 【信息科技风险管理:合规管理、技术防控与数字化】
  • L2-026 小字辈 - java
  • 排序算法-堆积树排序法(HeapSort)
  • 名词解释 MongoDB
  • Look Back(cf div3 905)
  • Spring框架的发展历程
  • vue 级联查询5级--省/市/区/街道/社区
  • C++并发与多线程(8) | 互斥量
  • Power BI 傻瓜入门 3. 选择Power BI的版本
  • BadNets:基于数据投毒的模型后门攻击代码(Pytorch)以MNIST为例