sgu106-109

sgu106-109写的时间也有点长了,懒得讲了 = = 就粗略用别人的博客吧


sgu106是关于不定方程,用了扩展欧几里德,下面的博客写的非常好

http://blog.csdn.net/volzkzg/article/details/7427233


sgu107就是一个发现规律的问题 = =


sgu108 http://blog.csdn.net/winoros/article/details/24053265

如果用bit数组那4M大小是完全够的,滚动数组更有技巧


sgu109

我的方法是这样的(不论奇数偶数)

比如5*5,原来是这样的

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

先走n(5)步,变成下面这样,空的表示删除

1 2 3 4 5
6 7 8 9 10
11 12 13 14  
16 17 18    
21 22      
然后都走奇数,一行一行删除一直到1

当N = 100刚好用完101-300的全部奇数

 accept code:

/*
 * 1 < N < 101
 * N <= K < 300
 * Ki != Kj
 */

#include <iostream>
using namespace std;

int main()
{
	int N,K;
    cin >> N;
    K = N;
    cout << K << " ";
    for(int i = 0; i < N;i++)
    	for(int j = 0; j < N;j++)
    		if(i+j > N)
    			cout << i*N+j+1 << " ";
    	
    N%2 == 0?K++:K+=2;
    
    cout << endl << K << " ";
    K += 2;
    for(int i = 1 ; i < N; i++){
    		int j = N - i;
    		cout << i*N+j+1 << " ";
    }
    
    for(int E = (N-1); E > 0; E--,K+=2){
    	cout << endl << K << " ";
    	for(int i = 0 ; i <= E; i++){
    		int j = E - i;
    		cout << i*N+j+1 << " ";
    	}
    }
    		
    return 0;
}




你可能感兴趣的:(sgu)