首页 > 其他分享 >数学_四平方定理

数学_四平方定理

时间:2023-11-30 11:03:37浏览次数:31  
标签:平方 const int 定理 long 数学 using ll dp

题目链接 :H-数学_2023 中国大学生程序设计竞赛(CCPC)新疆赛区 (nowcoder.com)

题意 : 

 有数学知识可知:

 本题如果根据贪心, 每个先用最大的数来凑,会出错,比如12 == 9 + 1 + 1 + 1, 但是答案是12 == 4 + 4 + 4,就会出错

题解思路dp[], dp[i]表示从j < i 凑到i需要的最小个数,转移方程 :dp[j] = min(dp[j], dp[j - w] + 1), 此处w时小于j的最大平方数

dp的起点时0,因此需要初始化dp[0] = 0

#include<bits/stdc++.h>

using namespace std;
using ull = unsigned long long;
using ll = long long;
using PII = pair<int,int>;
#define IOS ios::sync_with_stdio(false),cin.tie(0)
#define endl "\n"
#define pb push_back
const int N=1e5+10;
const int INF=0x3f3f3f3f;
const ll mod=998244353;
ll f[N], dp[N];
void dfs(int st, int u, int cn)
{
    //cout << st << ' ' << u - (int)sqrt(u) * (int)sqrt(u) << ' ' << cn + 1<< endl;
    if(u - (int)sqrt(u) * (int)sqrt(u) == 0)
    {
        f[st] = cn + 1;
        return ;
    }
    
    dfs(st, u - ((int)sqrt(u) * (int)sqrt(u)), cn + 1);
}
int main()
{
    int n;  cin >> n;
    memset(dp, 0x3f, sizeof dp);
    dp[0] = 0;
    ll res = 1;
    for(int i = 1; i * i <= n; i ++)
    {
        int w = i * i;
        for(int j = w; j <= n; j ++)
        {
            dp[j] = min(dp[j], dp[j - w] + 1);
//             if(j == 12)
//             {
//                 cout <<i << ' '<<  w << ' ' << j << ' ' << dp[j - w] + 1<< endl;
//             }
        }
            
    }
    //for(int i = 1; i <= 27; i ++) cout << f[i] << ' ';cout << endl;
    for(int i = 1; i <= n; i ++) res = (res * dp[i]) % mod; 
    cout << res << endl;
    return 0;
}

 

标签:平方,const,int,定理,long,数学,using,ll,dp
From: https://www.cnblogs.com/ZouYua/p/17866788.html

相关文章

  • 中学数学中的函数与方程——论文文档
    目录1引言 12函数与方程思想的概念 22.1函数思想 22.2方程思想 32.3数与方程思想的互转化 32.4在运用函数与方程思想解题时应注意的问题 33函数与方程的应用 43.1函数和方程的相互转换应用 43.2函数、方程、不等式相互转换应用 63.3数列在方程思想种的运用 63.4函数与......
  • 信息安全数学基础复习笔记
    1.整除、欧几里得除法的的定义好像别的没啥好说的,就挑点自己记不太清的写上来.1.1Eratosthenes(厄拉托塞斯)筛法该方法用于快速获得小于整数N的素数集合,工作原理如下:对寻找小于整数N的素数,先求\(\sqrt{N}\)(没法取整就写成\(\sqrt{N}<[\sqrt{N}]+1\)的形式),获取小于\(\sqrt{N}......
  • 数学证明
    如果有证明还有其他简单的方法的话,或者是还有证明想放上去的话可以私信我哦。几何板块勾股定理1.赵爽弦图\(4×(ab/2)+(b-a)^2=c^2\)\(a^2+b^2=c^2\)2.加菲尔德证法3.加菲尔德证法变式4.青朱出入图......此处省略海伦公式此时化简得出海伦公式,证......
  • 【具体数学】理性愉悦第二章
    求和因子在第一章中,我们对于递归式\[T_0=0,\\T_n=2T_{n-1}+1\\(n>0)\]使用了两边\(+1\)然后转化为\(U_n\)的方法,从而得出\(T_n=2^n-1\)。我们还可以采用另外一种方法。令两边除以\(2^n\),\[\dfrac{T_n}{2^n}=\dfrac{T_{n-1}}{2^{n-1}}+\dfrac{1}{......
  • NX二次开发 用数学函数获得两点的距离
    简介:    NX二次开发用数学函数获得两点的距离。代码://获得平面上2点距离doublegetPointToPointDis(doublep1[2],doublep2[2]){returnsqrt((p1[0]-p2[0])*(p1[0]-p2[0])+(p1[1]-p2[1])*(p1[1]-p2[1]));}    me.hpp内容:文章作者:里海......
  • 数学及数学相关 学习笔记
    数学及数学相关目录前置知识与符号定义快速幂素数筛裴蜀定理扩展欧几里得算法(exgcd)同余方程费马小定理模意义下的乘法逆元欧拉定理卢卡斯定理中国剩余定理0.前置知识与符号定义0.0缺省源由于篇幅原因,下文的代码自动省略以下片段:#include......
  • 复旦大学数学学院23级高等代数I期中考试精选大题解答
    四、求解下列线性方程组,其中$a_1,\cdots,a_n,b$为参数且$\sum\limits_{i=1}^na_i\neq0$:$$\begin{cases} (a_1+b)x_1+a_2x_2+a_3x_3+\cdots+a_nx_n=0,\\ a_1x_1+(a_2+b)x_2+a_3x_3+\cdots+a_nx_n=0,\\ a_1x_1+a_2x_2+(a_3+b)x_3+\cdots+a_nx_n=0,\\ \hfill\cdots\cdots......
  • 哥德尔完备性定理
    我们讨论何为“证明”。一个证明过程实际上是在给定条件的基础上,反复运用始终可以使用的基本规则,最后推演出想要的结论的过程。这个过程可以形式化地描述,称为SequentCalculus。由formula集合\(\Phi\)能“证明”出formula\(\varphi\),记为\(\Phi\vdash\varphi\)。一个可以被证......
  • 考研数学笔记:在计算无穷限积分的时候,要注意应用极限的思想
    在计算无穷限积分的时候,要注意应用极限的思想对于含有反三角函数的积分可以用对应的三角函数代换求解如何通过通解还原微分方程?判断微分方程解的形式有时候需要分类讨论......
  • 【算法】裴蜀定理
    裴蜀定理在数论中,裴蜀等式(英语:Bézout'sidentity)或裴蜀定理(Bézout'slemma)(或称贝祖等式)是一个关于最大公约数(或最大公约式)的定理。裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任何整数\(a\)和\(b\)和\(m\),关于未知数\(x\)和\(y\)的线性丢番图方程(称为裴蜀定理)\(a......