Z國的貨幣系統包含面值1元、4元、16元、64元共計4種硬幣,以及面值1024元的紙幣。現在小Y使用1024元的紙幣購買了一件價值為
N(0<N≤1024)N (0 < N \le 1024)N(0<N≤1024)的商品,請問最少他會收到多少硬幣?
w=int(input()) n=1024-w count=0 if int(n/64)>0: count=count+int(n/64) n=n%64 if int(n/16)>0: count=count+int(n/16) n=n%16 if int(n/4)>0: count=count+int(n/4) n=n%4 count=count+n print(count)
小明是一名算法工程師,同時也是一名鏟屎官。某天,他突發奇想,想從貓咪的視頻里挖掘一些貓咪的運動信息。為了提取運動信息,他需要從視頻的每一幀提取“貓咪特征”。一個貓咪特征是一個兩維的vector<x, y>。如果x_1=x_2 and y_1=y_2,那么這倆是同一個特征。
因此,如果喵咪特征連續一致,可以認為喵咪在運動。也就是說,如果特征<a, b>在持續幀里出現,那么它將構成特征運動。比如,特征<a, b>在第2/3/4/7/8幀出現,那么該特征將形成兩個特征運動2-3-4 和7-8。
現在,給定每一幀的特征,特征的數量可能不一樣。小明期望能找到最長的特征運動。
n=input() m=int(input()) dict1={} max1={} max2={} for j in range(0,m): xy=[] temp=[] v1=[int(x) for x in input().strip().split()] for i in range(0,v1[0]): x1=str(v1[2*i+1]) y1=str(v1[2*i+2]) x1y1=x1+"_"+y1 if x1y1 in max1.keys():#如果已經保存該特征值 max1[x1y1]=max1.get(x1y1)+1 else: max1[x1y1]=1 if x1y1 not in max2: max2[x1y1]=1 xy.append(x1y1) if j!=0: for k in max1.keys(): if k not in xy: if max1.get(k)>max2.get(k): max2[k]=max1.get(k) temp.append(k) for k in temp: max1.pop(k) for k in max1.keys(): if max1.get(k)>max2.get(k): max2[k]=max1.get(k) max3=[] for c in max2.keys(): max3.append(max2.get(c)) #print(c,",",max2.get(c)) print(max(max3))
為給定的二維平面整數點集。定義 P 中某點x,如果x滿足 P 中任意點都不在 x 的右上方區域內(橫縱坐標都大於x),則稱其為“最大的”。求出所有“最大的”點的集合。(所有點的橫坐標和縱坐標都不重復, 坐標軸范圍在[0, 1e9) 內)
如下圖:實心點為滿足條件的點的集合。請實現代碼找到集合 P 中的所有 ”最大“ 點的集合並輸出。
n=int(input()) point={} max1={} for i in range(0,n): v1=[int(x) for x in input().split()] point[v1[0]]=v1[1] for k in point.keys(): iss=True for h in point.keys(): if h>k and point.get(h)>point.get(k): iss=False if iss==True: max1[k]=point.get(k) keyy=[] for d in max1.keys(): keyy.append(d) keyy=sorted(keyy) for dd in keyy: print(dd,max1.get(dd))
給定一個數組序列, 需要求選出一個區間, 使得該區間是所有區間中經過如下計算的值最大的一個:
區間中的最小數 * 區間所有數的和最后程序輸出經過計算后的最大值即可,不需要輸出具體的區間。如給定序列 [6 2 1]則根據上述公式, 可得到所有可以選定各個區間的計算值:
[6] = 6 * 6 = 36;
[2] = 2 * 2 = 4;
[1] = 1 * 1 = 1;
[6,2] = 2 * 8 = 16;
[2,1] = 1 * 3 = 3;
[6, 2, 1] = 1 * 9 = 9;
從上述計算可見選定區間 [6] ,計算值為 36, 則程序輸出為 36。
區間內的所有數字都在[0, 100]的范圍內;
n=int(input()) v1=[int(x) for x in input().split()] result=[] for i in range(0,n): min1=0 sum1=0 for j in range(i,n): min1=min(v1[i:j+1]) sum1=sum(v1[i:j+1]) result.append(min1*sum1) print(max(result))
package test; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class test { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int[] v2=new int[n]; for(int i=0;i<n;i++) { v2[i]=Integer.valueOf(scanner.next()); } List<Integer> result=new ArrayList<Integer>(); for(int i=0;i<n;i++) { for(int j=i;j<n;j++) { result.add(getmin(v2,i,j)*getsum(v2,i,j)); } } System.out.print(getmax(result)); } public static int getmin(int[] n,int start,int end) { int min1=n[start]; for(int i=start;i<end+1;i++) { if(n[i]<min1) { min1=n[i]; } } return min1; } public static int getmax(List<Integer> n) { int min1=n.get(0); for(int i:n) { if(i>min1) { min1=i; } } return min1; } public static int getsum(int[] n,int start,int end) { int sum=0; for(int i=start;i<end+1;i++) { sum=sum+n[i]; } return sum; } }