#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cstdio>
#include <algorithm>
using namespace std;
1.
//素數的判斷 (要記住基本思想)
int isPrime(int n){
if(n <= 1) return 0; //特判
int sqr = (int)sqrt(1.0 * n); //根号n
for(int i = 2; i <= sqr; i++){
if(n % i == 0) return 0; //n是i的倍數,則n不是素數
}
return 1;
}
int main(){
int n;
scanf("%d",&n);
int flag = isPrime(n);
printf("%d",flag);
system("pause");
return 0;
}
2.
//數字黑洞
//我用了 把整數的每一個位數取出來的思想
/*給定任一個各位數字不完全相同的四位正整數,
如果先把四個數字按非遞增排序,再按非遞減排序,
然後用第一個數字減第二個數字, 将得到一一個新的數字。一
直重複這樣做, 很快會停在有“數字黑澗”之稱的6174,這個神奇的數字也叫Kaprekar常數。
例如,從6767 開始,将得到
7766- 6677= 1089
9810- 0189= 9621
9621- 1269- 8352
8532- 2358= 6174
7641- 1467= 6174
*/
int cmp1(int a, int b){
return a < b;
}
int cmp2(int a, int b){
return a > b;
}
int main(){
int n;
int arr[4];
int Max;
int Min;
scanf("%d",&n);
while(n != 6174){
for(int i = 0;i < 4;i++){
arr[i] = n % 10;
n = n / 10;
}
sort(arr,arr+4,cmp2);
Max = arr[0]*1000 + arr[1]*100 + arr[2]*10 + arr[3];
//printf("%d",Max);
sort(arr,arr+4,cmp1);
Min = arr[0]*1000 + arr[1]*100 + arr[2]*10 + arr[3];
n = Max - Min;
printf("%d-%d=%d\n",Max,Min,n);
}
printf("%d",n);
system("pause");
return 0;
}
*/
3.
//輸入兩個正整數,求其最大公約數
//求最大公約數的輾轉相處遞歸寫法
int gcd(int a, int b){
if (b == 0) return a;
else return gcd(b, a%b);
}
int main(){
int m,n;
while(scanf("%d%d",&m,&n) != EOF){
printf("%d\n",gcd(m,n));
}
printf("%d", 7%1);
system("pause");
return 0;
}
//最小公倍數=兩數的乘積/最大公約(因)數, 解題時要避免和最大公約(因)數問題混淆。
4.
//有幾個PAT 147 頁 最主要對的就是計算這題的思想啊
/*
字元串APPAPT中包含了兩個單詞“PAT",其中第一個PAT是由第二位(P)、第四位(A)和第六位(T)組成的:第二個PAT是由第三位(P)、第四位(A)和第六位(T)組成的。
現給定字元串,問一共可以形成多少個PAT?
解題思想:把每一個A左邊P的數*右邊T的個數之和,就是可以構成總共的PAT數。
*/
int main(){
char str1[10000];
//char str2[100000007];
gets(str1);
int count_P = 0;
int count_T = 0;
int sum = 0;
int len = strlen(str1);
for(int i = 0; i < len; i++){
// printf("%c\n",str1[i]);
}
for(int i = 0; i < len; i++){
if(str1[i] == 'A'){
for(int j = 0; j < i; j++){
if(str1[j] == 'P'){
count_P++;
}
}
for(int j = i+1; j < len; j++){
if(str1[j] == 'T'){
count_T++;
}
}
}
sum += count_P * count_T;
count_P = 0;
count_T = 0;
}
printf("%d\n",sum);
system("pause");
return 0;
}
2020.5.2/周六
by 922