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

7.4总结

今天写了几道题目

最近,一年级学生马克西姆学习了科拉兹猜想,但他在讲课时没有太注意,所以他认为猜想中提到了以下过程:

有一个变量 $$$x$$$ 和一个常数 $$$y$$$ 。下面的操作要执行 $$$k$$$ 次:

- 将 $$$x$$$ 增加 $$$1$$$ ,然后
- 当数字 $$$x$$$ 能被 $$$y$$$ 整除时,再除以 $$$y$$$ 。

请注意,这两个操作都是在一次操作中依次进行的。

例如,如果数字 $$$x = 16$$$ 、 $$$y = 3$$$ 和 $$$k = 2$$$ ,那么经过一次运算后, $$$x$$$ 变成了 $$$17$$$ ,而经过另一次运算后, $$$x$$$ 变成了 $$$2$$$ ,因为加一后, $$$x = 18$$$ 可以被 $$$3$$$ 整除两次。

鉴于初始值为 $$$x$$$ 、 $$$y$$$ 和 $$$k$$$ ,马克西姆想知道 $$$x$$$ 的最终值是多少。

思路是先凑到y的倍数,在除y,考虑到时间的问题,所以基于二分的思想设置了一个s每次对自己平方再判断能不能整除,复杂度从n降到了logn,一直除到a<b,再凑到a等于b,再除就是1,那么就是对剩下的c的部分对(b-1)取余再加一即为答案。

#include<bits/stdc++.h>
#include<algorithm>
#define ll long long
#define max_int 2147483647
#define max_ll 9223372036854775807
using namespace std;
int main()
{ios::sync_with_stdio(false);cin.tie(0);int all;cin>>all;while(all--){ll a,b,c;cin>>a>>b>>c;int bo=1;while(c){ll yu=b-a%b;ll s=b,s2=b*b;if(yu<=c){c-=yu;a+=yu;}else{cout<<a+c<<endl;bo=0;break;}while(a%b==0){s=b;while(a%s==0){s2=s;s*=s;}a/=s2;}if(a<b){if(c>=b-a){c-=b-a;}else{cout<<a+c<<endl;bo=0;break;}if(c==0){cout<<'1'<<endl;bo=0;break;}cout<<c%(b-1)+1<<endl;bo=0;break;}//if(bo) cout<<a<<endl;//else break;}if(bo) cout<<a<<endl;}return 0;
}

关键在组合数的拆分和前缀和处理以及取模的问题。

#include<bits/stdc++.h>
#define ll long long
#define max_int 2147483647
#define max_ll 9223372036854775807
using namespace std;
vector<vector<int>>q(2001,vector<int>(2001));
vector<vector<int>>p(2001,vector<int>(2001));
void solve(int k){q[1][1]=1;for(int i=0;i<=2000;++i){q[i][0]=1;}for(int i=2;i<=2000;i++){for(int j=1;j<=i;j++){q[i][j]=(q[i-1][j]+q[i-1][j-1])%k;}}for(int i=2;i<=2000;i++){for(int j=1;j<=i;j++){p[i][j]=p[i-1][j]+p[i][j-1]-p[i-1][j-1];if(q[i][j]==0) p[i][j]+=1;}p[i][i+1]=p[i][i];}
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);int t,k,n,m;cin>>t>>k;solve(k);for(int i=0;i<t;++i){cin>>n>>m;if(m>n) m=n;cout<<p[n][m]<<endl;}return 0;
}

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

相关文章:

  • 知识图谱查询语言的表示
  • 重生之我要学后端100--计算机网络部分概念(持续更新)
  • 时空预测+特征分解!高性能!EMD-Transformer和Transformer多变量交通流量时空预测对比
  • Vue 循环内部获取图片高度
  • vue动态组件与插件到底是什么?
  • SwiftUI九创建watchOS应用
  • 【Linux进阶】文件和目录的默认权限与隐藏权限
  • SQL 查询中 (+) 符号的含义
  • 基于Vue的MOBA类游戏攻略分享平台
  • 如何在PhpStorm中运行SQL文件?
  • Qt实现检测软件是否多开
  • spring security + vue,登录功能
  • 64.函数参数和指针变量
  • 原创作品 —(金融行业)年金系统交互和视觉设计
  • 3D slicer
  • 面试题--SpringCloud
  • Qt windeployqt 打包的Qt动态库介绍
  • WordPress付费进群V2主题,多种引流方法,引私域二次变现
  • 【Linux】性能分析器 perf 详解(三):kmem、mem
  • 微信小程序怎样跳转页面?
  • 针对SVN、GIT版本管理工具进行源代码加密保护
  • js条件引用
  • 帝国CMS(EmpireCMS)漏洞复现
  • DP:解决路径问题
  • Halcon OCR字符识别(极坐标转换,字符识别)
  • 【管理咨询宝藏139】某大型快消集团公司多渠道销售管理体系方案
  • 大模型提问中包括时间的实战方案
  • 【算法】(C语言):堆排序
  • ffmpeg下载/配置环境/测试
  • C# 异步编程详解(Task,async/await)