Python — 算法竞赛之利器。。。

Python — 算法竞赛之利器。。。,第1张

 

 

 

n = int(input()) 
s = 1 
ans = 0
for i in range(1,n+1,1):    
    s *= i
    ans += s 
print(ans)

 

 

 

def NonRepeatList1(data):   #函数1:set去重,不保持原顺序
    return list(set(data))
def NonRepeatList2(data):   #函数2:暴力去重,保持原顺序
    return [i for n, i in enumerate(data) if i not in data[:n]]
#下面测试上面2个函数
import random
import time
time0 = time.time()
a = []
for i in range(0,100000,1):                #10万个随机数
    a.append(random.randint(-100000000,100000000))    #随机数取值范围
#print (a)                                 #可以打印数组看看
print ("random time =",time.time()-time0)  #统计随机数的生成时间

time0 = time.time()
b = NonRepeatList1(a)                      #去重,不保持原顺序
#print (b)                                 #打印看看顺序
random.shuffle(b)                          #再次打乱顺序
#print (b)                                 #打印看看是否乱序
print ("set time =",time.time()-time0)     #统计set()去重的时间

time0 = time.time()
c = NonRepeatList2(a)                      #去重,保持原顺序
#print (c)                                 #打印看看是否保持原序
print ("enum time =",time.time()-time0)    #统计暴力去重的时间

 

d = []
for i in range(0,len(b),1):         #b是去重后的整数数组
    d.append(b[i] / 100)

 

#把本代码存为文件 makedata.py
import random
a= []
b= []
for i in range(0,1000000,1):             #100万个随机数
    a.append(random.randint(-500000,500000))
b=list(set(a))                           #去重后放在b中

#print("lena=",len(a))                   #验证a的个数是不是100万个
#print("lenb=",len(b))                   #b的个数有60多万个

random.shuffle(b)                        #打乱b
print(len(b),random.randint(1,len(b)))   #打印n、m
for i in range(0,len(b),1):              #逐个打印
print ( b[i],end=' ')  

#下面的做法用到了文件 *** 作,其实不需要在代码中存取文件,后文“2 对拍”的做法更简单
''' 
f = open("d:\data.in", "w")              #输出到文件里
print(len(b),random.randint(1,len(b)),file=f)
for i in range(0,len(b),1):              #逐个打印
    print ( b[i],end=' ',file=f)    
f.close()
'''

 

 

#include
using namespace std;
const int MAXN = 1000001;
int a[MAXN];
int main(){
    int n,m;
    while(~scanf("%d%d", &n, &m)){
        memset(a, 0, sizeof(a));
        for(int i=0; i0; i--)
            if(a[i]){
                if(m>1)  printf("%d ", i-500000);
                else      printf("%d\n", i-500000);
                m--;
            }
    }
    return 0;
}

 

 

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/570048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存