codeforces——数学

codeforces 805A     http://codeforces.com/problemset/problem/805/A

/*
题意:输入两个整数l,r,让你找一个因子
使得[l,r]里面所有的数,能整除这个因子的数最多,输出这个因子
如果答案有多个,输出任意一个
*/
#include<iostream>
#include<cstdio>
#include<cstring>

using namespace std;

int l,r,cnt1,cnt2;

int main()
{
    scanf("%d%d",&l,&r);
    if(l!=r) printf("2\n");
    else printf("%d\n",l);
    return 0;
}
难度系数:0.1

 codeforces 804E     http://codeforces.com/problemset/problem/804/E    (数学构造)

/*
题意:给出一个1到n的排列,问每两个位置都进行一次交换最终排列不变是否可能,
如果可能输出交换顺序。

表示并不会,看了题解后还是一知半解,代码实现也是不懂...
好吧我智商低,太弱了
大概就是4的倍数一定行,模4余1一定行(以为4一定行,第五个数跟每个都换一遍貌似也行)
反正好神奇,好扯淡... 
*/
#include <bits/stdc++.h>  
#define xx first  
#define yy second  
#define mp make_pair  
#define pb push_back  
#define fill( x, y ) memset( x, y, sizeof x )  
#define copy( x, y ) memcpy( x, y, sizeof x )  
using namespace std;  
  
typedef long long LL;  
typedef pair < int, int > pa;  
  
inline int init()  
{  
    int sc = 0, f = 1; char ch = getchar();  
    while( ch < '0' || ch > '9' ) { if( ch == '-' ) f = -1; ch = getchar(); }  
    while( ch >= '0' && ch <= '9' ) sc = sc * 10 + ch - '0', ch = getchar();  
    return sc * f;  
}  
  
int main()  
{   
    int n = init();  
    if( n % 4 > 1 ) return puts( "NO" ), 0;  
    puts( "YES" );  
    for( int i = n % 4 ; i < n ; i += 4 )  
    {  
        for( int j = 0 ; j < i ; j++ ) printf( "%d %d\n", j + 1, i + 1 );  
        printf( "%d %d\n", i + 1, i + 2 );  
        for( int j = i - 1 ; ~j ; j-- ) printf( "%d %d\n", j + 1, i + 2 );  
        for( int j = 0 ; j < i ; j++ ) printf( "%d %d\n", j + 1, i + 3 );  
        printf( "%d %d\n", i + 3, i + 4 );  
        for( int j = i - 1 ; ~j ; j-- ) printf( "%d %d\n", j + 1, i + 4 );  
        printf( "%d %d\n", i + 1, i + 4 );  
        printf( "%d %d\n", i + 2, i + 3 );  
        printf( "%d %d\n", i + 1, i + 3 );  
        printf( "%d %d\n", i + 2, i + 4 );  
    }  
}  
我不会...

 

posted @ 2017-05-14 21:10  安月冷  阅读(250)  评论(0编辑  收藏  举报