暴力求解/数学问题

Posted chanceyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了暴力求解/数学问题相关的知识,希望对你有一定的参考价值。

1.数学问题

(1)素数

算术基本定理:若(ain Z),(agt 1),则有(a=p_1p_2cdots p_n),其中(p_i)为素数
证明:假定定理对所有小于a的正整数均成立 若a为素数,则结论显然成立 若a为合数,(a=bc),其中(1lt b,clt a)由归纳假设(b=p_1p_2cdots p_k,c=p_{k+1}p_{k+2}cdots p_n)
for(int i = 2; i <= n; i++)
{
    if(!vis[i])
    prime[cnt++] = i;
    for(int j = 0; j<cnt && i*prime[j]<=n; j++)
    {
        vis[i*prime[j]] = 1;
        if(i % prime[j] == 0) break;
    }
}
判断素数
陷阱:1的特殊处理(极易错)
bool judge(int x){
    if(x<2)return 0;
    for(int i=2;i<=sqrt(x);++i){//9
        if(x%i==0)return 0;
    }
    return 1;
}

(2)gcd

long long gcd(long long a,long long b){return b==0?a:gcd(b,a%b);}//原来a>b现调换

(3)回文数

for(int i = 0; i < index / 2; i++) {
    if(arr[i] != arr[index-i-1]) 
    {         
        printf("No
");            
        flag = 1;break;        
    }    
}if(!flag)printf("Yes
");

3.数据类型范围









































数据类型 用10表示 用2表示
unsigned int <img class="math-inline" src="https://math.jianshu.com/math?formula=0%2C%204%C3%9710%5E%7B9%7D" alt="0, 4×10^{9}" mathimg="1"0, 4×10^9> 技术图片
int 技术图片 技术图片
unsigned long 技术图片 技术图片
long 技术图片 技术图片
long long 技术图片 技术图片
unsigned long long 技术图片 技术图片


































数据类型 比特位数 有效数字 用10表示 用2表示
float 32 6~7 技术图片 技术图片
double 64 15~16 技术图片 ——
long double 128 18~19 技术图片 ——


求解技巧

思路:遍历范围内全部数字,依据首+尾/首+间隔遍历

1.二分法upper_bound,lower_bound的运用

2.PAT题,利用次序

for (int i = 0; i < len; i++) {
    if (s[i] == 'T')countt++;
}
for (int i = 0; i < len; i++) {
    if (s[i] == 'P')countp++;
    if (s[i] == 'T')countt--;
    if (s[i] == 'A')result = (result + (countp * countt) % 1000000007) % 1000000007;
}

3.数学形式题注意对数字的直接利用,少用字符串特性

以上是关于暴力求解/数学问题的主要内容,如果未能解决你的问题,请参考以下文章

数学工具scipy中的优化方法

PTA 7-19 暴力小学(二年级篇)-求出2个三位数 (10分)

分治&暴力求解最近点对问题 + 时间性能量化分析

《高等应用数学问题的MATLAB求解》——第8章习题代码

《高等应用数学问题的MATLAB求解》——第7章习题代码

Codeforces 993A. Two Squares(暴力求解)