zoukankan      html  css  js  c++  java
  • [XJOI NOI2015模拟题13] B 最小公倍数 【找规律】

    题目链接:XJOI - NOI2015-13 - B

    题目分析

    通过神奇的观察+打表+猜测,有以下规律和性质:

    1) 删除的 n 个数就是 1~n。

    2) 当 c = 2 时,如果 n + 1 是偶数,答案是 lcm(n + 1, (n + 1) / 2 * 3) = 3(n + 1),如果 n + 1 是奇数,答案是 lcm(n + 2, (n + 2) / 2 * 3) = 3(n + 2)。

    注意特判 n = 2 和 n = 4 的情况,这些情况下 (n + 1) / 2 * 3 或 (n + 2) / 2 * 3 不在 nc 的范围内。

    3) 当 c > 2 时,答案是 lcm(n + 1, 2 * (n + 1)) = 2(n + 1)。

    注意特判 n = 1, c = 3 的情况,这个情况下 2 * (n + 1) 不在 nc 的范围内。

    代码

    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    
    using namespace std;
    
    inline void Read(int &Num)
    {
    	char c = getchar();
    	while (c < '0' || c > '9') c = getchar();
    	Num = c - '0'; c = getchar(); 
    	while (c >= '0' && c <= '9')
    	{
    		Num = Num * 10 + c - '0';
    		c = getchar();
    	}
    }
    
    int T, n, c;
    
    int main()
    {
    	scanf("%d", &T);
    	for (int Case = 1; Case <= T; ++Case)
    	{
    		Read(n); Read(c);
    		if (c == 2)
    		{
    			if (n == 2) printf("12
    ");
    			else if (n == 4) printf("24
    ");
    			else printf("%d
    ", (n + 1 + (n + 1) % 2) * 3);
    		}
    		else 
    		{
    			if (n == 1 && c == 3) printf("6
    ");
    			else printf("%d
    ", 2 * n + 2);
     		}
    	}
    }
    

      

  • 相关阅读:
    Flask商城项目详解
    《剑指offer》题解(Python版本)
    小程序学习笔记
    Html5 语义化标签
    常用页面布局
    css 语法记录
    vue-router 配置
    axios 配置
    Mybatis Generator
    openssl_pkcs7_verify的问题之旅
  • 原文地址:https://www.cnblogs.com/JoeFan/p/4597956.html
Copyright © 2011-2022 走看看