和为给定数(信息学奥赛一本通-T1244)
生活随笔
收集整理的這篇文章主要介紹了
和为给定数(信息学奥赛一本通-T1244)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
【題目描述】
給出若干個(gè)整數(shù),詢問其中是否有一對(duì)數(shù)的和等于給定的數(shù)。
【輸入】
第一行是整數(shù)n(0 < n ≤ 100,000),表示有n個(gè)整數(shù)。
第二行是n個(gè)整數(shù)。整數(shù)的范圍是在0到108之間。
第三行是一個(gè)整數(shù)m(0≤m≤230),表示需要得到的和。
【輸出】
若存在和為m的數(shù)對(duì),輸出兩個(gè)整數(shù),小的在前,大的在后,中間用單個(gè)空格隔開。若有多個(gè)數(shù)對(duì)滿足條件,選擇數(shù)對(duì)中較小的數(shù)更小的。若找不到符合要求的數(shù)對(duì),輸出一行No。
【輸入樣例】
4
2 5 1 4
6
【輸出樣例】
1 5
【源程序】
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<string> #define INF 999999999 #define N 1000001 #define MOD 1000000007 #define E 1e-3 using namespace std; int a[N]; int main() {long long n,m,i,j;int tot=0;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];cin>>m;sort(a+1,a+1+n);i=1;j=n;while(i<j){if(a[i]+a[j]==m){cout<<a[i]<<" "<<a[j]<<endl;exit(0);}else if(a[i]+a[j]<m)i++;elsej--;}cout<<"No"<<endl;return 0; }?
總結(jié)
以上是生活随笔為你收集整理的和为给定数(信息学奥赛一本通-T1244)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 暑期训练日志----2018.8.15
- 下一篇: 炮兵阵地(POJ-1185)