QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#572165#6425. Harmonious RectangleZhi_zI#WA 0ms3748kbC++172.1kb2024-09-18 12:44:002024-09-18 12:44:01

Judging History

你现在查看的是最新测评结果

  • [2024-09-18 12:44:01]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3748kb
  • [2024-09-18 12:44:00]
  • 提交

answer

#include <bits/stdc++.h>

/* Orther */
#define int long long
#define YES cout<<"YES\n"
#define NO cout<<"NO\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0); cout.tie(0)
using namespace std;

/* Pair */
#define x first
#define y second

/* Data type */
using ll = long long;
using ull = unsigned long long;
using PII = pair<int,int>;
using VI = vector<int>;

/* STL */
#define eb emplace_back
#define ef emplace_front
#define pb push_back
#define pf push_front
#define mp make_pair
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define all1(x) x.begin()+1,x.end()

/* Random */
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define random(a,b) rng()%(b-a+1)+a

/* Contest */
const int INF = 0x3f3f3f3f ; // 1e9
const int MOD =  1e9 + 7 ;
const int N = 2e5 + 10, M = 55;

int qpow(int a,int b ) {
	a %= MOD; int res = 1;
	while ( b ) {
		if ( b & 1 ) {
			res = res * a % MOD;
		}
		a = a * a % MOD;
		b >>= 1;
	}
	return res;
}

int num[9][9] = {
/* 1 */	{0,0,0,0,0,0,0,0,0},
/* 2 */	{0,15,339,4761,52929,517761,4767849,43046721,387420489},
/* 3 */	{0,339,16485,518265,14321907,387406809,460338013,429534507,597431612},
/* 4 */	{0,4761,518265,43022385,486780060,429534507,792294829,175880701,246336683},
/* 5 */	{0,52929,14321907,486780060,288599194,130653412,748778899,953271190,644897553},
/* 6 */	{0,517761,387406809,429534507,130653412,246336683,579440654,412233812,518446848},
/* 7 */	{0,4767849,460338013,792294829,748778899,579440654,236701429,666021604,589237756},
/* 8 */	{0,43046721,429534507,175880701,953271190,412233812,666021604,767713261,966670169},
/* 9 */	{0,387420489,597431612,246336683,644897553,518446848,589237756,966670169,968803245}
} ;

void Rainbow_()
{
    int n , m ;
    cin >> n >> m;
    
    if (n == 1 || m == 1 ) {
    	cout << 0 << '\n';
    	return ;
    }
    
    if ( max( n, m) > 9 ) {
    	cout << qpow(3 ,n * m);
    	return ;
    } else {
    	n -- , m -- ;
    	cout << num[n][m]<<'\n';
    }
}
 
signed main()
{   
    IOS;
    int _ = 1;
    cin >> _;
 
    while ( _ -- ) 
        Rainbow_();
 
    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3748kb

input:

3
1 4
2 2
3 3

output:

0
15
16485

result:

ok 3 number(s): "0 15 16485"

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 3684kb

input:

10000
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 6...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
15
339
4761
52929
517761
4767849
43046721
387420489
4867843803810593924295345078658105427922948291...

result:

wrong output format Expected integer, but "486784380381059392429534507865...1412881026947929242461363181650" found