2020icpc江西省赛 “I.Simple Math Problem”

java题解,注释版。

题目:

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

Tongtong is playing math game again. She had come across this square matrix many times,so needless to say, she knows what you want to ask. Now she throws this question to you. You need to look at the following square matrix,then she will give you three integers n,x,and y,that means there are an n×n square matrix.

You need to figure out what the value of row x, column y corresponds to.

For example,there are one 5×5 square matrix:

       0   1   3   6   A  

       2   4   7   B   F

       5   8   C  10  13

       9   D  11  14  16

       E  12  15  17  18

输入描述:

Only a single line contains three integers n,x,y (0≤x≤1000000000, 0≤y≤1000000000, 1≤n≤1000000001)

输出描述:

 

A single line with an integer representing the corresponding value.

示例1

输入

复制5 2 2

5  2  2

输出

复制12

12

简单的说就是找到方阵的规律,然后取出对应的值。

规律很简单,第一行的值是y坐标的累加,例:(0,0)=0 --> 0

                                                                            (0,1)  =1  --> 0+1

                                                                            (0,2) =3   --> 0+1+2

然后反斜列(右上-左下)递增(左上部分)

转化方式为y坐标加上x坐标,然后根据第一行对应y坐标的值加上x(x是几就说明移动了几个,就应该加上几);

右下部分规律,右下角的点的值是n*n-1(点数减一,因为是从0开始计数的)

然后最下一行的值是右下角点减去(n-1-y)的累加,例:(4,3)=24-(5-1-3)= 23

                                                                                           (4,2)=24 - ((5-1-3)+(5-1-2))=21

   转化规律是y坐标加上(n-1-x)对应y坐标的值加上(n-1-x),与上方同理。                                         


import java.util.*;

public class Main{
    public static void main(String args[]){
        long n=5, x=3, y=4;
        long t=0;
        Scanner sc = new Scanner(System.in);
        n = sc.nextLong();
        x = sc.nextLong();
        y = sc.nextLong();
        if(x+y<n){
            t=(x+y)*(x+y+1)/2;
            t+=x;
            System.out.println(t);
        }else{
            t=(n*n)-1-(n-1-(y-n+1+x))*(n-(y-n+1+x))/2-(n-1-x);
            System.out.println(t);
        }
        
    }
}

以上算式故意没有化简,就是为了能看懂过程,可以自行化解。

### 关于2023年ICPC江西省题目解析 目前针对2023年ICPC江西省的比,具体的官方题解尚未广泛传播或公开发布。然而,在准备此类竞时,通常可以通过多种途径获取帮助和资源: - **在线评测平台(OJ)**:已有50多道来自各大公司的最新真题被录入至特定的OJ平台上供免费练习[^1]。虽然这些题目并非直接来源于2023年的ICPC江西省事,但对于熟悉相似类型的编程挑战非常有益。 对于希望深入理解往年类似事的情况,可参考如下实例: - 2022年江西理工大学软件工程学院举办的程序设计竞提供了详细的C++题解案例[^2]。 另外,有关区间选择优化问题的一个例子可以在2020ICPC江西省大学生程序设计竞中找到,其中涉及到了如何挑选若干区间以实现`min(tot,x)`的最大化策略[^3]。 尽管上述资料不是专门针对2023年度的具体情况,但它们能够提供有价值的背景信息和技术指导,有助于参者更好地应对可能遇到的问题类型。 ```cpp // 示例代码展示了一个简单的字符串处理逻辑,这可能是解决某些ACM/ICPC风格问题的基础部分之一 #include <iostream> using namespace std; int main() { string s1 = "acmer ICPCAK"; string s2 = "CCPCAK"; int length = min(s1.size(), s2.size()); string result; for (int i = 0; i < length; ++i){ if (s1[i] == s2[i]){ result += s1[i]; } else break; } cout << result << endl; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值