[程式設計題] 好多魚!
時間限制:1秒
空間限制:32768k
牛牛有乙個魚缸。魚缸裡面已經有n條魚,每條魚的大小為fishsize[i] (1 ≤ i ≤ n,均為正整數),牛牛現在想把新捕捉的魚放入魚缸。魚缸內存在著大魚吃小魚的定律。經過觀察,牛牛發現一條魚a的大小為另外一條魚b大小的2倍到10倍(包括2倍大小和10倍大小),魚a會吃掉魚b。考慮到這個,牛牛要放入的魚就需要保證:
1、放進去的魚是安全的,不會被其他魚吃掉
2、這條魚放進去也不能吃掉其他魚
魚缸裡面已經存在的魚已經相處了很久,不考慮他們互相捕食。現在知道新放入魚的大小範圍[minsize,maxsize](考慮魚的大小都是整數表示),牛牛想知道有多少種大小的魚可以放入這個魚缸。
輸入描述:
輸入資料報括3行. 第一行為新放入魚的尺寸範圍minsize,maxsize(1 ≤ minsize,maxsize ≤ 1000),以空格分隔。
第二行為魚缸裡面已經有魚的數量n(1 ≤ n ≤ 50)
第三行為已經有的魚的大小fishsize[i](1 ≤ fishsize[i] ≤ 1000),以空格分隔。
輸出描述:
輸出有多少種大小的魚可以放入這個魚缸。考慮魚的大小都是整數表示
輸入例子:
1 12 1 1
輸出例子:
3解題思路:本題想法是採用set,池子裡的每條魚的2-10倍,與1/10-1/2的整數存入set中,然後對於給定魚的大小範圍,找是否在set中如果不在,count++
注意事項:對於村1/10-1/2時,對於1/10,如果算出的為小數,則存入比它大的第乙個整數
對於1/2,算出為小數,存比它小的第乙個整數即存整型的1/2*a[i]即可,所以只有1/10需要特別處理一下
1 #include 2 #include3using
namespace
std;45
intmain()618
sets;
19//
存所有魚的2-10倍值
20for(int i=0;i)
2126}27
//存所有魚的1/10 - 1/2,例如a[i]=22存入的就是3-11
28//
例如a[i] = 3 存入的為1
29//
因此對於a[i]/10存入比它算的結果的小數大的最小整數
30//
對於a[i]/2存入的是比它算的結果的小數小的最大的整數
31for(int i=0;i)
3239
for(;j<=a[i]/2;j++)
4043}44
int count = 0;45
set::iterator it;
46//
for(it = s.begin(); it != s.end(); it++)
47//
50//
cout<51
for(int i= minsize;i<=maxsize;i++)
5258
5960
}61 cout6263
}64 }
網上參考**思路:用標誌位flag的值來存是否在範圍內,如果在flag = false
對於輸入魚的範圍,判斷它是否在池子中每條魚2-10倍和1/10-1/2倍之間,如果在置false,且跳出與池子中魚判斷的迴圈。
1 #include"stdio.h"2
intmain()313
int num=0;14
for(int i=minn; i<=maxx; i++)
1525
else
if(i>=1.0/10*ai[j] && i<=1.0/2*ai[j])
2631}32
if(sign)
33 num++;34}
35 printf("
%d\n
",num);
36return0;
37 }
牛客網 好多魚
牛牛有乙個魚缸。魚缸裡面已經有n條魚,每條魚的大小為fishsize i 1 i n,均為正整數 牛牛現在想把新捕捉的魚放入魚缸。魚缸內存在著大魚吃小魚的定律。經過觀察,牛牛發現一條魚a的大小為另外一條魚b大小的2倍到10倍 包括2倍大小和10倍大小 魚a會吃掉魚b。考慮到這個,牛牛要放入的魚就需要...
演算法題 好多魚(牛客網)
程式設計題 好多魚!牛牛有乙個魚缸。魚缸裡面已經有n條魚,每條魚的大小為fishsize i 1 i n,均為正整數 牛牛現在想把新捕捉的魚放入魚缸。魚缸內存在著大魚吃小魚的定律。經過觀察,牛牛發現一條魚a的大小為另外一條魚b大小的2倍到10倍 包括2倍大小和10倍大小 魚a會吃掉魚b。考慮到這個,...
超級素數冪 全國模擬(一)
程式設計題 超級素數冪 時間限制 1秒 空間限制 32768k 如果乙個數字能表示為p q 表示冪運算 且p為乙個素數,q為大於1的正整數就稱這個數叫做超級素數冪。現在給出乙個正整數n,如果n是乙個超級素數冪需要找出對應的p,q。輸入描述 輸入乙個正整數n 2 n 10 18 輸出描述 如果n是乙個...