基础tips
1. while循环中的m--和--m //虽然真的超基础,但一不小心(可能只有我)就会忽略上面那个包括m=0吧 ( ̄ε(# ̄)
2. 读入未知个数的数字,其中间隔空格数未知🍓
用ungetc()函数 //把读入的这个值放回流里,但是c还是保留该值
1 #include<bits/stdc++.h> 2 #define fio ios::sync_with_stdio(false);cin.tie(0) 3 #define ll long long 4 #define mp make_pair 5 #define inf 0x3f3f3f3f 6 const int N=105; 7 const int M=1e3+10; 8 const ll mod=998244353; 9 using namespace std; 10 int m,n ; 11 int gcd(int a,int b){ 12 return b?gcd(b,a%b):a; 13 } 14 int main() 15 { 16 scanf("%d",&n); 17 while(n--) 18 { 19 int id=0,a[N];char c; 20 while(~scanf("%d",&a[++id])) 21 { 22 while((c=getchar())==' '); 23 ungetc(c,stdin); //把c放入流里,但是c还是保存读入的数 24 // printf("***%c***\n",c); 25 if(c=='\n') break; 26 } 27 int ans=0; 28 for(int i=1;i<id;i++) 29 { 30 for(int j=i+1;j<=id;j++) 31 ans=max(ans,gcd(a[i],a[j])); 32 } 33 printf("%d\n",ans); 34 } 35 return 0; 36 }
3. 全排列 --- next_permutation()
(1) 头文件:#include <algorithm>
(2) 实现:
1 int main() 2 { 3 int a[15]; 4 for(int i=0;i<3;i++) 5 a[i]=i+1; 6 do{ 7 for(int i=0;i<3;i++) 8 printf("%d",a[i]); 9 printf("\n"); 10 }while(next_permutation(a,a+3)); 11 return 0; 12 }
(3) 结果:
123
132
213
231
312
321
tips:是按照现在已有的a内顺序排,如a内是5 4 6,则输出 546 564 645 654,所以用之前可以sort一下。