日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

交税

發布時間:2024/10/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 交税 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description

阿強愉快的拿到了自己工資,可是摳門的他發現自己還要沒有交稅。X國采用一種奇怪的稅收方式。對于工資

num,需要收的稅是p,p為num的最大的除數并且p不等于num。

(ps:6的最大除數是3,25的最大除數是5,2的最大除數是1)

為了減少人們要交的稅,X國又規定可以把錢分開算稅,分開的個數不限,即n1?+?n2?+?...?+?nk?=?n,要交的

稅就是每個部分的總和。

阿強現在向你尋求幫助,給定X最少要交多少錢的稅?

Input

數據的組數?T;(T<=2000)

接下來T行,每行一個數字X(2 <= X <= 2e9)

Output

?對于每行X,輸出最少的稅Y

?

Sample Input

3 11 27 8

Sample Output

1 3 2

HINT

?

?對于第三個例子8,可以分為3+5,3和5的最大除數都是1,所以答案是2

C++版本一

題解:

任意一個大于2的偶數都能被拆分成兩個素數的和。同時任意一個大于5的奇數都能被拆分成3個素數的和,一個為3,剩下的是偶數,按照前面的拆分即可。同時對于奇數還要考慮n-2為素數時,個數為2而不是3.

驗證大素數則可以用米勒羅賓素數測試。

#include<bits/stdc++.h> using namespace std; #define ll long longll mod_mul(ll a, ll b, ll n) {ll res = 0;while(b) {if(b&1) res = (res + a) % n;a = (a + a) % n;b >>= 1;}return res; } ll mod_exp(ll a, ll b, ll n) {ll res = 1;while(b) {if(b&1) res = mod_mul(res, a, n);a = mod_mul(a, a, n);b >>= 1;}return res; } bool miller_rabin(ll n) {if(n == 2 || n == 3 || n == 5 || n == 7 || n == 11) return true;if(n == 1 || !(n%2) || !(n%3) || !(n%5) || !(n%7) || !(n%11)) return false;ll x, pre, u;int i, j, k = 0;u = n - 1; while(!(u&1)) { k++; u >>= 1;}srand((ll)time(0));for(i = 0; i < 20; ++i) { x = rand()%(n-2) + 2; if((x%n) == 0) continue;x = mod_exp(x, u, n); pre = x;for(j = 0; j < k; ++j) {x = mod_mul(x, x, n);if(x == 1 && pre != 1 && pre != n-1) return false; pre = x;}if(x != 1) return false; }return true; }int main() {//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int t;scanf("%d",&t);ll n;while(t--) {scanf("%lld",&n);if(n%2 == 0) {if(n == 2) printf("1\n");else printf("2\n");}else {if(miller_rabin(n)) printf("1\n");else if(miller_rabin(n-2)) printf("2\n");else printf("3\n");}} }

C++版本二

哥德巴赫猜想

大于二的偶數可以分解為兩個素數之和;

大于七的奇數可以分解為三個素數之和;(是一定可以分解成三個素數之和,也有可能分解成兩個)分解成兩個必然有一個是2,其他就是至少三個。

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm> #include <string.h> #include <cmath> #include <queue> using namespace std; typedef long long ll; const int N=10000; ll t,n,m; int a[N]; bool prime(int x){for(int i=2;i<=sqrt(x);i++)if(x%i==0)return 0;return 1;} int main() {scanf("%lld",&t);while(t--){scanf("%lld",&n);if(prime(n)||n==1||n==2||n==3)cout << 1 << endl;else if(n%2==0||prime(n-2))cout << 2 << endl;elsecout << 3 << endl;}//cout << "Hello world!" << endl;return 0; }

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的交税的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。