0015
#include <cstdio>
#include <iostream>
using namespace std;
const int mod = 20100713;
typedef long long ll;
const int N = 1e6+10;
ll f[N];//k!
ll quick(ll a,ll n){
ll ans = 1;
while(n){
if(n&1) ans = (ans*a)%mod;
a = (a*a)%mod;
n>>=1;
}
return ans;
}
//预处理k!
void init(){
f[0] = f[1] = 1;
for(int i = 2;i <= N-10;i++){
f[i] = (f[i-1]*i)%mod;
}
}
int main(){
init();
int t;scanf("%d",&t);
ll n,k;
while(t--){
scanf("%lld%lld",&n,&k);
ll ans = (f[k]*(quick(k+1,n-k)-quick(k,n-k)+mod)%mod)%mod;
printf("%lld\n",ans);
}
return 0;
}
0023
#include<stdio.h>
int main()
{
int b,a[200];
int i,j,t;
scanf("%d",&b);
for(i=0;i<b;i++)
scanf("%d",&a[i]);
for(i=0;i<b;i++)
for(j=0;j<b-i-1;j++)
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
0032
#include<iostream>
#include <algorithm>
#include<string>
using namespace std;
int compara(string a, string b)
{
string a1 = a.substr(6, 8);
string a2 = b.substr(6, 8);
if (a1 == a2)
return a > b;
else
return a1 > a2;
}
int main()
{
int n;
cin >> n;
string a[100000];
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n, compara);
for (int i = 0; i < n; i++)
{
cout << a[i] << endl;
}
return 0;
}
0035
//拓扑排序
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<set>
using namespace std;
bool book[26];
set<int> s_out[26]; //s_out[i] 从i出发能到的点(没有重复)
set<int> s_in[26]; //s_in[i] 能到i的所有的点
int main()
{
char a,b,c;
while(cin>>a>>b>>c)
{
s_out[a - 'A'].insert(c - 'A');
s_in[c -'A'].insert(a - 'A');
book[a - 'A'] = true;
book[c - 'A'] = true;
}
queue<int> q;
for(int i=0;i<26;i++)
if(s_in[i].size() == 0 && book[i]) //把所有入度为0的点都入队
q.push(i);
char ans[26];
int k = 0;
while(! q.empty())
{
int j = q.front();
set<int>::iterator it;
for(it = s_out[j].begin();it!=s_out[j].end();it++)
{
int to = *it; // *迭代器是元素值
s_in[to].erase(j); //删除该点和他连的边
if(s_in[to].size()==0)
q.push(to);
}
s_out[j].clear(); //删除这个点了
ans[++k] = (char) j + 'A';
q.pop();
}
int i;
for(int i=0;i<26;i++)
{
if(s_in[i].size() > 0)
{
puts("No Answer!");
return 0;
}
}
for(int i=1;i<=k;i++) printf("%c",ans[i]);
}
0052
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct student
{
string name;
int sorce=0,id;
};
int cmp(student a, student b)
{
if (a.sorce == b.sorce)
return a.id < b.id;
return a.sorce > b.sorce;
}
int main()
{
int n, m;
cin >> n;
vector<student>arr(n);
for (int i = 0; i < n; i++)
{
cin >> arr[i].name;
arr[i].id = i;
}
string t;
int sorce,cnt=0,s=1;
cin >> m;
for (int i = 0; i < m*n; i++)
{
cin >> sorce >> t;
cnt++;
for (int j = 0; j < arr.size(); j++)
{
if (arr[j].name == t)
{
arr[j].sorce += sorce;
break;
}
}
if (cnt == n)//输入n次,代表一次考试
{
s = 0;
cnt = 0;
sort(arr.begin(), arr.end(), cmp);//排序
for (int j = 0; j < arr.size(); j++)
{
if (arr[j].name == "DaDa")
{
cout << j+1 << endl;
break;
}
}
}
}
return 0;
}