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

数学+思维,CF1056B - Divide Candies

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

Problem - 1056B - Codeforces


二、解题报告

1、思路分析

考虑i^2 + j^2 | m

i^2 \equiv m - j^2 \ mod \ m \\ (i \ mod \ m)^2 + (j \ mod \ m)^2 \equiv 0 \ mod \ m

而m的余数有限,且m很小

我们枚举两重循环,都枚举m的余数,分别记为x,y

如果x ^ 2 + y ^ 2 | m

我们就计算1~n中余数为x和y的数字个数cnt_x和cnt_y, 余数对(x, y)贡献就是cnt_x和cnt_y

2、复杂度

时间复杂度:O(M^2) 空间复杂度:O(1)

3、代码详解

 ​
#include <bits/stdc++.h>
using PII = std::pair<int, int>;
using i64 = long long;
using i128 = __int128;
std::ostream& operator<< (std::ostream& out, i128 x) {std::string s;while (x) s += ((x % 10) ^ 48), x /= 10;std::reverse(s.begin(), s.end());return out << s;
}void solve() {i64 res = 0, N, M;std::cin >> N >> M;for (int i = 1; i <= M; i ++ )for (int j = 1; j <= M; j ++ ) if ((i * i + j * j) % M == 0) {i64 cnt_i = (N - i + M) / M, cnt_j = (N - j + M) / M;res += cnt_i * cnt_j;}std::cout << res;/*a^2 + b^2 | m(a mod m)^2 + (b mod m)^2 | mx^2 + y^2 | mΣ(cnt_x * cnt_y)m(q - 1) + r <= nq = (n - r + m) / m*/
}int main () {std::ios::sync_with_stdio(false);   std::cin.tie(0);  std::cout.tie(0);int _ = 1;// std::cin >> _;while (_ --)solve();return 0;
}

相关文章:

  • 网络安全快速入门(十五)(下)手动创建用户及su,sudo命令
  • 简单使用phpqrcode 生成二维码图片
  • 代码随想录算法训练营第36期DAY50
  • Docker 进入指定容器内部(以Mysql为例)
  • 详解linux设备下的/dev/null
  • 微信小程序怎么进行页面传参
  • 大学数字媒体艺术设计网页设计试题及答案,分享几个实用搜题和学习工具 #媒体#职场发展
  • 12寸晶圆厂建设概述
  • Javascript全解(基础篇)
  • C语言详解(动态内存管理)2
  • Nvidia Jetson/Orin/算能 +FPGA+AI大算力边缘计算盒子:潍柴雷沃智慧农业无人驾驶
  • idea debug时提示”Method breakpoints may dramatically slow down debugging“的解决办法
  • go语言实战--基于Vue3+gin框架的实战Cetide网项目(讲解开发过程中的各种踩坑)
  • Unity学习要点
  • 【线性代数】第一章 概率论的基本概念
  • [LeetCode] Wiggle Sort
  • 2019.2.20 c++ 知识梳理
  • ES2017异步函数现已正式可用
  • Intervention/image 图片处理扩展包的安装和使用
  • Linux后台研发超实用命令总结
  • Python语法速览与机器学习开发环境搭建
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 盘点那些不知名却常用的 Git 操作
  • 详解NodeJs流之一
  • 智能网联汽车信息安全
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​ArcGIS Pro 如何批量删除字段
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​VRRP 虚拟路由冗余协议(华为)
  • # Redis 入门到精通(七)-- redis 删除策略
  • #图像处理
  • (3)STL算法之搜索
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (4.10~4.16)
  • (pycharm)安装python库函数Matplotlib步骤
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (回溯) LeetCode 78. 子集
  • (强烈推荐)移动端音视频从零到上手(上)
  • (十五)、把自己的镜像推送到 DockerHub
  • (四)React组件、useState、组件样式
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ****Linux下Mysql的安装和配置
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core 2.1路线图
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET连接数据库方式
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)