标签:二分法 src double The sign alt 范围 原来 暴力求解
1.数学问题
(1)素数
证明:假定定理对所有小于a的正整数均成立 若a为素数,则结论显然成立 若a为合数,\(a=bc\),其中\(1\lt b,c\lt a\)由归纳假设\(b=p_1p_2\cdots 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\n");
flag = 1;break;
}
}if(!flag)printf("Yes\n");
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.数学形式题注意对数字的直接利用,少用字符串特性
标签:二分法 src double The sign alt 范围 原来 暴力求解
原文地址:https://www.cnblogs.com/chanceYu/p/12037202.html