暴力の解決/数学の問題

1.数学の問題

(1)素数

算術の基本定理:もし(ZにおけるA \ \)\\(A \ GT 1 \) そこ\(A = p_1p_2 \ cdots P_N \) \(P_I \)が素数であります
証明:定理は合成数である場合、素数は、次に結論が明確に確立されたときに確立されたすべての整数正よりも小さいと仮定\(= BC \) ここで\(1 \ LT B、C \ LT Aが\) 帰納法の仮定により\(= p_1p_2 \ cdots p_k B 、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クラス= "数学インライン" 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> 0、2 ^ {32} -1-
int型 -2×10 ^ {9}、2×10 ^ {9} -2 ^ {31}、2 ^ {31} -1-
unsigned long型 0、4×10 ^ {9} 0、2 ^ {32} -1-
長いです -2×10 ^ {10}、2×10 ^ {10} -2 ^ {31}、2 ^ {31} -1-
長い長いです 0、9×10 ^ {18} -2 ^ {63}、2 ^ {63} -1-
符号なしの長い長いです 0、10 ^ {19} 0、2 ^ {64} -1-


































データの種類 ビット数 有効数字 10を指定 2が表すと
浮く 32 6〜7 -3.4×10 ^ {38}〜+ 3.4 * 10 ^ {38} -2 ^ {128}〜+ 2 ^ {128}
ダブル 64 15〜16 -1.7×10 ^ { -  308}〜1.7×10 ^ {308} -
長い二 128 18〜19 -1.2 * 10 ^ { -  4932} ^ {4932}〜1.2 * 10 -


ソリューションテクニック

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

1.二分法の使用UPPER_BOUND、LOWER_BOUNDの

ORDER BY 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.注数字の問題の数学的な形式を直接使用、少ない文字列プロパティ

おすすめ

転載: www.cnblogs.com/chanceYu/p/12037202.html