基础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 }
UVA 11827

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一下。

 

posted @ 2019-07-16 12:12  XXrl  阅读(130)  评论(0编辑  收藏  举报