洛谷原题

题目让我们求出两个数 \(a\)\(b\),让其和等于 \(s\)


这里提出一种思路:令 \(a\)\(s-1\)\(b\)\(1\)。因为这两个数加起来一定等于 \(s\)

看到数据范围是 \(-999 \le s \le 999\)。在这个规模的数据中,有两种情况要特殊处理。

特殊情况 1

两个数都不能是 \(0\)。如果 \(s\)\(1\)\(a\) 就会等于 \(0\)。针对这种情况,要自己造一种符合要求的答案。

特殊情况 2

两个数都不能超过三位。即 \(-999 \le a,b \le 999\)。对于 \(-999\) 这组数据,\(a\)\(-1000\)。不符合要求,需要自己造一组符合要求的答案。

AC 记录

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n;
    scanf("%d",&n);
    if(n!=1&&n!=-999){//普通情况
        printf("%d 1",n-1);
    }else if(n==1){//特殊情况 1
        printf("2 -1");
    }else{//特殊情况 2
        printf("-998 -1");
    }
    return 0;
}
posted on 2026-06-29 21:44  lz5332t  阅读(1)  评论(0)    收藏  举报