UVa-11609 Teams(组合+快速幂)

F(n) = C(n,1)*1 + C(n,2)*2 + ... = sum(C(n,i)*i)=n * 2^(n-1)

#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#define ll long long
#define mod 1000000007
using namespace std;

ll ppow(ll x,ll n)  {  
    ll tp=1;  
    while(n)  
    {  
        if(n&1) tp=tp*x%mod;  
        n>>=1;  
        x=x*x%mod;  
    }  
    return tp;  
}  

int main(){
	int T;
	ll n;
	cin>>T;
	for(int i=1;i<=T;i++){
		cin>>n;
		cout<<"Case #"<<i<<": "<<(n*ppow(2,n-1))%mod<<endl;
	}
	return 0;
} 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# 用字符串来存储最原始的球员信息 player_infos = """Carmelo Anthony,Portland Trail Blazers,SF; Anthony Davis,Los Angeles Lakers,PF; LeBron James,Los Angeles Lakers,SF; Kevin Durant,Brooklyn Nets,SF; James Harden,Brooklyn Nets,PG; Kyrie Irving,Brooklyn Nets,SG; Damian Lillard,Portland Trail Blazers,PG""" # 将原始字符串通过split方法以分号来切割,得到一个列表,并赋值给一个变量 player_infos_list = player_infos.split(';') # 创建一个空字典,用于存储{球队:球员信息列表} team_dict_ = {} # 遍历刚才切割得到的列表,每一个元素都是一个球员信息的字符串 for player_str in player_infos_list: # 将球员字符串通过逗号进行再次切割,得到一个列表,列表里面包含了一个球员的三个特征 player = player_str.split(',') # 获取球员姓名 player_name = player[0].strip() # 获取球员的球队 player_team = player[1].strip() # 获取球员的位置 player_position = player[2].strip() # 将球员信息构建为一个字典 player_info_dic = {"name": player_name, "team": player_team, "position": player_position} # 首先判断球队在不在定义的team_dict里面,如果不在,就为team_dict增加一对键值对,键为球队,值为一个空列表 if player_team not in team_dict: team_dict[player_team] = [] # 然后将球员信息追加到这个列表里面,当循环走完,team_dict里面就存储了所有的球队和球员信息 team_dict[player_team].append(player_info_dic) # team_dict里面获取所有的球队信息,并拼成一个字符串 teams = '|'.join(list(team_dict.keys())) # 通过input函数让用户输入需要查询的球队 team = input("请输入你要查询的球队%s:" % teams) # 利用字典的键索引拿到该球队所有的球员信息列表 team_info = team_dict[team] # 打印表头 print('+' + '-' * 67 + '+') # 这里使用了字符串的center方法和字符串的格式化表达 print("|%s|%s|%s|" % ( 'name'.center(25), 'team'.center(30), 'position'.center(10) )) print('+' + '-' * 67 + '+') # 遍历球员信息列表,格式化打印每个球员信息 for player_info in team_info: print("|%s|%s|%s|" % ( player_info['name'].center(25), player_info['team'].center(30), player_info['position'].center(10), )) print('+' + '-' * 67 + '+')
06-12

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值