列表

详情


NC200608. C-最大模数

描述

    一次周六新生训练后,一个师妹来找JAJA_Xin。
师妹:“师兄,为什么今天我对面那个师兄那么冷漠。”
JAJA_Xin:“噢你居然还不认识大名鼎鼎的魏队,正常啦,魏队很傲的,因为你们太菜,所以你懂的。”
师妹:“那怎么才能让那个师兄觉得我不菜,你可以帮我去问问吗?”
    乐于助人的JAJA_Xin怎么可能拒绝师妹呢,跑去问魏队。
魏队:“简单啊,我出一道题,能做出来就不算很菜了,就出一道数学题吧,简单一点,让他们可以做。”

                              Ra = [ (a−1)n + (a+1)n ] %a2 ,(n>0)

例如当a=4, n=2时,Ra=32 +52 =34,而34%16 =2,故Ra=2。由于n可以是任意大于0的正整数,所以存在很多Ra的解,找到任意一个Ra就算做出来这道题。例如,当a=4的时候,Ra的取值可以是2或者是8。

    “你怎么这么有空还管闲事,不赶紧去补题吗...”,JAJA_Xin被魏队一顿说了之后闷闷不乐,不小心就把原题意记成了要找到最大的Ra才能算做出来这道题,并把修改的题意后和师妹说了,这可难到他们了。例如,当a=4的时候,Ra_max=8。

输入描述

多测试用例,用例不超过10000个。
每个用例有一行数据,一个整数a (3≤a≤1000000)。

输出描述

对于每个用例输出一行,Ra_max。

示例1

输入:

4
7

输出:

8
42

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 8ms, 内存消耗: 368K, 提交时间: 2020-02-04 17:33:49

#include <stdio.h>
int main(){

    long long a;
    while(~scanf("%lld",&a))
        printf("%lld\n",(a-1)/2*2*a);
    
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 30ms, 内存消耗: 508K, 提交时间: 2019-12-29 18:46:44

#include<iostream>
using namespace std;
int main(){
	int a;
	while(cin>>a){
        cout<<(a-1)/2*2*a<<endl;
	}
}     

C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 368K, 提交时间: 2020-08-28 14:37:13

#include<cstdio>
main()
{
	for(long n;~scanf("%ld",&n);)
		printf("%ld\n",n&1?n*(n-1):n*(n-2));
}

上一题