Highways

来源:互联网 发布:sql server是干嘛的 编辑:程序博客网 时间:2024/05/17 21:50

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=32290#problem/C

// File Name: uvala3720.cpp// Author: bo_jwolf// Created Time: 2013年09月28日 星期六 18:58:58#include<vector>#include<list>#include<map>#include<set>#include<deque>#include<stack>#include<bitset>#include<algorithm>#include<functional>#include<numeric>#include<utility>#include<sstream>#include<iostream>#include<iomanip>#include<cstdio>#include<cmath>#include<cstdlib>#include<cstring>#include<ctime>using namespace std;const int maxn = 305 ;int gcd[ maxn ][ maxn ] ;int Gcd( int a , int b ){return b == 0 ? a : Gcd( b , a % b ) ;}int main(){for( int i = 1 ; i < maxn ; ++i ){for( int j = i ; j < maxn ; ++j ){gcd[ i ][ j ] = Gcd( i , j ) ; }}int n  , m , temp; long long int ans ;while( scanf( "%d%d" , &n , &m ) != EOF ){if( !n && !m ){break ; }ans = 0  ; if( n > m )swap( n , m ) ;for( int i = 1 ; i < n ;++i ){for( int j = i ; j < m ; ++j ){if( gcd[ i ][ j ] <= 2 ){if( i == j ){temp = ( n - i  ) * ( m - j  ) ; if( gcd[ i ][ j ] == 1 ){ans += temp ; }else{ans -= temp ; }}else{temp = ( n - i  ) * ( m - j  ) ;if( i < m && j < n ){temp += ( m - i  ) * ( n - j  ) ;}if( gcd[ i ][ j ] == 1 ){ans += temp ;}else{ans -= temp ;}}}}}ans *= 2 ;printf( "%lld\n" , ans ) ;}return 0;}