湖南大学ACM程序设计新生杯大赛(同步赛)E - Permutation

Posted Fighting Heart

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了湖南大学ACM程序设计新生杯大赛(同步赛)E - Permutation相关的知识,希望对你有一定的参考价值。

题目描述

A mod-dot product between two arrays with length n produce a new array with length n. If array A is a1,a2,...,an and array B is b1,b2,...bn, then A mod-dot B produce an array C c1,c2,...,cn such that c1 =  a1*b1%n, c2 = a2*b2%n,...,ci = ai*bi%n,..., cn = an*bn%n.
i.e. A = [2,3,4] and B = [5,2,2] then A mod-dot B = [1,0,2].
A permutation of n is an array with length n and every number from 0 to n-1 appears in the array by exactly one time.
i.e. A = [2,0,1] is a permutation of 3, and B = [3,4,1,2,0] is a permutation of 5, but C = [1,2,2,3] is NOT a permutation of 4.
Now comes the problem: Are there two permutaion of n such that their mod-dot product is also a permutation of n?

输入描述:

The only line with the number n (1 <= n <= 1000)

输出描述:

If there are such two permutation of n that their mod-dot product is also a permutation of n, print "Yes" (without the quote). Otherwise print "No" (without the quote).
示例1

输入

2

输出

Yes

说明

A = [0,1] and B = [0,1]. Then A mod-dot B = [0,1]
示例2

输入

997

输出

No

备注:

1 <= n <= 1000

题解

规律。

写了个暴力,算了$1$到$11$的答案,发现只有$1$和$2$有解,所以猜了一发。。

#include <cstdio>
#include <algorithm>
using namespace std;
 
 
int main() {
  int n;
  scanf("%d", &n);
  if(n == 1 || n == 2) printf("Yes\n");
  else printf("No\n");
  return 0;
}

  

以上是关于湖南大学ACM程序设计新生杯大赛(同步赛)E - Permutation的主要内容,如果未能解决你的问题,请参考以下文章

湖南大学ACM程序设计新生杯大赛(同步赛)L - Liao Han

湖南大学ACM程序设计新生杯大赛(同步赛)A - Array

湖南大学ACM程序设计新生杯大赛(同步赛)G - The heap of socks

湖南大学ACM程序设计新生杯大赛(同步赛)C - Do you like Banana ?

湖南大学ACM程序设计新生杯大赛(同步赛)I - Piglet treasure hunt Series 1

湖南大学ACM程序设计新生杯大赛(同步赛)J - Piglet treasure hunt Series 2