#include<iostream>
#include<cmath>
using namespace std;
int prime(int x)
{
int i;
for(i=2;i<=sqrt(x);i++)
{
if(x%i==0) return 0;
}
return 1;
}
int main()
{
int n;
while(cin>>n)
{
cout<<n<<"=";
int j=2;
while(n!=1)
{
if(n%j==0 && prime(j))
{
cout<<j;
n=n/j;
if(n != 1)
cout<<"*";
else cout<<endl;
}
else j++;
}
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int cmp(int x,int y)
{
return x>y;
}
int main()
{
int n,i,m,a[1011],b[1011];
while(cin>>n)
{
for(i=0;i<n;i++)
{
cin>>a[i];
b[i]=a[i];
}
sort(b,b+n,cmp);
int flag=0,ans=0;
for(i=0;i<n-1;i++)
{
if(b[i+1]!=b[i])
{
flag=1;
cout<<b[i+1];
ans=b[i+1];
break;
}
}
if(flag==0)
cout<<"none"<<endl;
else
{
for(i=0;i<n;i++)
{
if(a[i]==ans)
{
cout<<" "<<i;
}
}
cout<<endl;
}
}
return 0;
}
#define MAX 20002
#include <iostream>
#include <algorithm>
using namespace std;
int dragon[MAX],knight[MAX];
void init(){
for(int i=0;i<MAX;i++){
dragon[i]=0;
knight[i]=0;
}
}
//贪心,先升序排序,一个骑士只能砍一个头并且仅能被雇佣1次。
int main(){
int n,m;
while(cin>>n>>m){
init();
for(int i=0;i<n;i++){
cin>>dragon[i];
}
for(int i=0;i<m;i++){
cin>>knight[i];
}
sort(dragon,dragon+n);
sort(knight,knight+m);
int sum=0,d_idx=0,k_idx=0;
while(d_idx<n&&k_idx<m){
if(dragon[d_idx]<=knight[k_idx]){
sum+=knight[k_idx];
d_idx++;
k_idx++;
}else{
k_idx++;
}
}
if(d_idx<n){
cout<<"Lose!"<<endl;
}else{
cout<<sum<<endl;
}
}
}
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main(){
int n,k=1,i,j,temp;
int a[20][20];
cin>>n;
for(i=0;i<n;i++){ //看好!i是从0开始的;
for(j=0;j<n;j++){
a[i][j]=k; //先把数存起来;
k++;
}
if(i%2==1){ //每个奇数行都换过来;
for(j=0;j<n/2;j++){
temp=a[i][j];
a[i][j]=a[i][n-1-j];
a[i][n-1-j]=temp;
}
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%4d",a[i][j]); //占四个字节;
}
cout<<endl;
}
return 0;
}
#include<iostream>
#include<stdlib.h>/*11 单词统计*/
#include<cstring>
#include<cstdio>
using namespace std;
int main(){
int n,i,len,count;
char a[51];
cin>>n;
getchar(); //要删掉一个换行;
while(n--)
{
gets(a);
len=strlen(a);
count=0;
for(i=0;i<len;i++)
{
if(a[i]!=' '&&a[i+1]==' ') //只要一个有一个没有就好了;
count++;
}
if(a[len-1]!=' ') //再加上最后一个单词的情况;
count++;
cout<<count;
if(n!=0) cout<<endl;
}
return 0;
}
/*14 转换成十进制*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
string str;
int m,n,i;
while(cin>>n>>str)
{
int len=str.length();
//cout<<len<<endl;
int sum=0,k=0; //k在这里也很重要;
for(i=len-1;i>=0;i--,k++)
{
if(str[i] >='A' && str[i]<='J')
sum+=pow(n,k)*(str[i]-55);
else
{
sum+=pow(n,k)*(str[i]-'0');
}
}
cout<<sum<<endl;
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void trans(int a,int b,char res[]){
int i,temp;
i=0;
if(a>0){
while(a>0){
temp=a%b;
if(temp>9){
res[i++]=temp-10+'A';
}
else{
res[i++]=temp+'0';
}
a/=b;
}
res[i]='\0';
strrev(res);
puts(res);
}
else //如果整数位0的特殊情况
printf("0\n");
}
int main(){
char str[101];
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
trans(n,m,str);
}
return 0;
}
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<string.h>
using namespace std;
#define max 1000
//返回str中从start位置开始的len个字符
void getsub(string str,int start,int len,char subs[]){
int i,j=0;
for(i=start;i<start+len;i++)
subs[j++]=str[i];
subs[j]='\0'; //存到sub里;
}
int main(){
int i,j,k;
string a,b;
char c[max],sub[max]={0};
while(cin>>a){
memset(sub,0,sizeof(sub));
cin>>b;
for(i=0;i<a.length();i++){
for(j=0;j<b.length();){
while(a[i]!=b[j]&&b[j]!='\0')
j++; //直接暴力呀!!
if(b[j]=='\0')
break;
else{
k=0;
while(a[i+k]==b[j+k]&&a[i+k]!='\0'&&b[j+k]!='\0')
k++;
getsub(b,j,k,c);
if(strlen(c)>strlen(sub)||(strlen(c)==strlen(sub)&&strcmp(c,sub)<0))
strcpy(sub,c); //判断sub;
j++;
}
}
}
puts(sub);
//memset(a,0,sizeof(a));
}
return 0;
}
#include<iostream>
using namespace std;
int main(){
long long i,n,ans=0,x;
cin>>n;
for(i=1;i<=n;i++){
x=i;
while(x>1)
ans=max(ans,x=x%2?(x*3+1):(x/2));
}
cout<<ans;
return 0;
}
#include<stdio.h>
#include<cstring>
#include<iostream>
#include<string.h>
using namespace std;
#define max 1000
int main(){
int i,n,a,b;
cin>>a>>b>>n;
while(a>b){
a=a%b;
}
i=0;
while(i<=n+2){
a=a*10;
i++;
if(i>=n&&i<=n+2){
cout<<a/b;
}
a=a%b;
}
cout<<endl;
return 0;
}
#include<iostream>
#include<limits.h>
using namespace std;
int pIndex[101],Ugly[100005];
void Ugly_Num(int* Prime,int K,int N)
{
int i,j,min,minIndex;
for(i=0;i<K;++i)
pIndex[i]=0;//初始化为0,因为初始状态第i个状态已经乘到0位,0位的值是1
Ugly[0]=1;
for(i=1;i<=N;)//找出从1到N的丑数,太暴力了,提示:注意第3位置留空!!!
{
min=INT_MAX;
for(j=0;j<K;++j)//找到最小值,K个素数分别和之前的丑数相乘求出最小的那一个
{
//(j,pIndex[j])表示第j个素数已经乘到了第pIndex[j]位了,比如说8=2*4,2是第0个素数,4是第3位,则pIndex[0]=3
//下一次,prime[j]乘pIndex[j]+1位就可以了,因为再乘之前的也只会比这小
if(Prime[j]*Ugly[pIndex[j]] < min)
{
min=Prime[j]*Ugly[pIndex[j]];
minIndex=j;//最小的素数索引
}
}
if( min != Ugly[i-1]) //如果和之前的不一样,更新之,否则只更新相乘的位,因为下一次对应的素数要乘更大的丑数
Ugly[i++]=min;
++pIndex[minIndex];//素数索引
}
cout<<Ugly[N]<<endl;
}
int main()
{
int prime[4]={2,3,5,7};
Ugly_Num(prime,4,19);
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int prime(int x)
{
if(x<2)
return 0;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0)
return 0;
}
return 1;
}
int main()
{
char s[101];
int max,min,ans,flag,a[26];
scanf("%s",s);
int len=strlen(s);
memset(a,0,sizeof(a));
for(int i=0;i<len;i++)
a[s[i]-'a']++;
sort(a,a+26);
for(int i=0;i<26;i++)
{
if(a[i])
{
min=a[i];
break;
}
}
ans=a[25]-min;
if(prime(ans))
{
printf("Lucky Word\n");
printf("%d\n",ans);
}
else
{
printf("No Answer\n");
printf("0\n");
}
return 0;
}
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main() {
string s;
int n;
cin >> n >> s;
int len = int(s.length());
map<string, int > cp;
int ans_num = 0;
string ans;
for (int num = n; num <= len; num++) {
cp.clear();
for(int i = 0; i <= len - num; i++) {
cp[s.substr(i, num)]++;
}
string tem = "";
string tem_s = "";
int tem_num = 0;
for(int i = 0; i <= len - num; i++) {
tem = s.substr(i, num);
if (tem_num < cp[tem]) { //选出现最早的,所以后面出现的次数相同不用更新这里的小于很关键,不可以是小于等于
tem_num = cp[tem];
tem_s = tem;
}
}
if(tem_num >= ans_num) { //次数相同,选长度大的。这里的大于等于很关键,不可以是大于
ans_num = tem_num;
ans = tem_s;
}
}
cout << ans;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
char s1[100],s2[100];
int a[100],b[100];
int main()
{
scanf("%s %s",s1,s2);
int len1 = strlen(s1);
int len2 = strlen(s2);
int i;
if(len1 != len2){
cout<<"N"<<endl;
}else{
for(i=0; i<len1; i++){
if(s1[i]>='A' && s1[i]<='Z') a[i]=s1[i]-'A';
else a[i]=s1[i]-'a';
}
for(i=0; i<len2; i++){
if(s2[i]>='A' && s2[i]<='Z') b[i]=s2[i]-'A';
else b[i]=s2[i]-'a';
}
sort(a,a+len1);
sort(b,b+len2);
for(i=0;i<len1;i++){
if(a[i] != b[i]){
break;
}
}
if(i == len1) cout<<"Y"<<endl;
else cout<<"N"<<endl;
}
return 0;
}
/*
1、把15位身份证号码中的年份由2位(7,8位)改为四位;
2、最后添加一位验证码。验证码的计算方案:
将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2)
并相加,然后除以 11 取余数,0-10 分别对应 1 0 x 9 8 7 6 5 4 3 2。
*/
#include<stdio.h>
int xishu[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char duiying[17]={"10x98765432"};
int main(){
char num1[18];
int num2[18];
int sum=0;
scanf("%s",num1);
/*将数位往后移两位*/
for(int i=15;i>=6;i--){
num1[i+2]=num1[i];
}
num1[6]='1';
num1[7]='9';
for(int i=0;i<17;i++){
num2[i]=num1[i]-'0';
sum+=num2[i]*xishu[i];
}
sum%=11;//除以11取余数
num1[17]=duiying[sum];
num1[18]='\0';
printf("%s",num1);
}
#include<iostream>
using namespace std;
int book[31];
int ans[8];
int main() {
int n, key, cnt;
cin >> n;
for (int i = 1; i <= 7; i++) {
cin >> key;
book[key] = 1;
}
while (n--) {
cnt = 0;
for (int i = 1; i <= 7; i++) {
cin >> key;
if (book[key] == 1) {
cnt++;
}
}
ans[7 - cnt]++;
}
for (int i = 0; i <= 6; i++) {
cout << ans[i] << " ";
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int sushu(int x){
int i;
for(i=2;i<=sqrt(x);i++){
if(x%i==0)
return 0;
}
return 1;
}
int main()
{
int n,num,i,flag;
scanf("%d",&n);
while(n--){
flag=1;
cin>>num;
for(i=2;i<=sqrt(num);i++){
if(num%i==0){
if(sushu(i)&&sushu(num/i)){
cout<<"Yes"<<endl;
flag=0;
break;
}
}
}
if(flag){
cout<<"No"<<endl;
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
char num1[10001];
char num2[10001];
int res[20002]={0};
int up=0,i,j,k,len1,len2,num=-1;
cin>>num1>>num2;
len1=strlen(num1);
len2=strlen(num2);
for(i=len1-1;i>=0;i--){
num++;
k=num;
for(j=len2-1;j>=0;j--){
up=up+(num1[i]-'0')*(num2[j]-'0')+res[k];
res[k++]=up%10;
up=up/10;
}
while(up!=0){
res[k++]=up%10;
up/=10;
}
}
for(k=k-1;k>=0;k--)
cout<<res[k];
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int res[20002]={0};
int up=0,i,j,k,len1,len2,num=-1;
int n,len;
cin>>n>>len;
j=0;
res[0]=1;
for(i=2;i<=n;i++){
up=0;
for(k=0;k<=j;k++){
int temp=res[k]*i+up;
res[k]=temp%10;
up=temp/10;
}
while(up!=0){
j++;
res[j]=up%10;
up/=10;
}
}
for(i=len-1;i>=0;i--)
cout<<res[i];
return 0;
}
#include<cstdio>
using namespace std;
#define MAXN 10010
int alone[MAXN];
int main(){
int N;
int k;
int sum;
scanf("%d", &N);
for(int i = 1; i <= N; ++i){
k = i;
sum = i;
while(k){
sum += k % 10;
k /= 10;
}
alone[sum] = 1;
}
for(int i = 1; i < N; ++i){
if(alone[i] == 0)
printf("%d\n", i);
}
return 0;
}
#include<iostream>
using namespace std;
int main(){
int Se[1002];
int loc;
int n, k;
int temp;
int num;
while (cin >> k >> n){
loc = 0;
num = 1;
while (loc < n){
temp = loc;
Se[loc++] = num;
for (int i = 0; i < temp&&loc<n; i++)
Se[loc++] = num + Se[i];
num *= k;
}
cout << Se[n - 1];
}
return 0;
}
#include<stdio.h>
#include<math.h>
#include<time.h>
int isprime(int num)
{
if(num<2)
return 0;
for(int i=2;i<=sqrt(num);i++)
{
if(num%i==0)
return 0;
}
return 1;
}
int main()
{
int n,i,k;
while(~scanf("%d",&n))
{
if(n<0)
break;
k=0;
for(i=2;(i+2)<=n;i++)
{
if(isprime(i)&&isprime(i+2))
{
k++;
}
}
printf("%d\n",k);
}
return 0;
}
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
int cmp(const void*_a,const void*_b)//从大到小排序
{
int *a=(int *)_a;
int *b=(int *)_b;
return *b-*a;
}
int main()
{
int *a;
int n,m,i,j;
scanf("%d",&n);
a=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
int l,r,k,p=0;
int *temp;
scanf("%d%d%d",&l,&r,&k);
temp=(int *)malloc(sizeof(int)*(r-l+1));
for(j=l-1;j<r;j++)//把第l个到第r个的元素都提取出来,存在temp数组中,然后从大到小排序之后就简单多了
{
temp[p++]=a[j];
}
qsort(temp,p,sizeof(int),cmp);
printf("%d\n",temp[k-1]);
}
return 0;
}
#include <stdio.h>
int a[1000000];
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int temp;
scanf("%d",&temp);
a[temp]++;
}
int i;
for(i=0;i<1000000;i++)
{
if(a[i]!=0)
printf("%d %d\n",i,a[i]);
}
return 0;
}
/*用数组来存储数字的各个数位,再借助排序方法得到由这几个数位组成的最大数和最小数
*/
#include<iostream>
#include <algorithm> //包含sort()函数,sort()函数--默认从小到大排序
using namespace std;
void fun(int n, int a[]); //将一个数字的各个数位从高到低依次存入一个数组中去
bool compare(int a, int b); //编写的sort函数的参数,以完成从大到小的排序
int maxNum(int a[]); //各个数位从大到小排列所组成的数
int minNum(int a[]); //各个数位从小到大排列所组成的数
int main() {
int n, a[4];
int max, min;
cin >> n;
int count=0;
while (1) {
fun(n, a);
max = maxNum(a);
min = minNum(a);
n = max - min;
count++;
if (n == 6174)
break;
}
cout<<count;
return 0;
}
void fun(int n,int a[]) {
int i = 3;
while (n > 0) {
a[i] = n % 10;
n = n / 10;
i--;
}
while (i > -1) { //处理位数小于4位的情形,不足4位的用0填充
a[i] = 0;
i--;
}
}
bool compare(int a, int b) {
return a > b;
}
int maxNum(int a[]) {
sort(a, a + 4, compare);
return a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
}
int minNum(int a[]) {
sort(a, a + 4);
return a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
}
#include <iostream>
#define MOD 50000
using namespace std;
int v[2000000];
int main() {
int n;
cin >> n;
for(int i = 2; i * i < 2000000; i++) {//筛法选质数
if(v[i] == 1)
continue;
for(int j = i * i; j < 2000000; j = j + i)
v[j] = 1;
}
long long int ans = 1;
int cnt = 0;
for(int i = 2; i < 2000000; i++) {
if(v[i] == 0) {
ans = (ans * i) % MOD;
cnt++;
}
if(cnt == n) break;
}
cout << ans;
return 0;
}
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 200+5;
int a[N][N];
int r, c;
int solve(){
for(int len = min(r,c); len >= 1; len--){
for(int i = 0; i < r && i+len <= r; i++){
for(int j = 0; j < c && j+len <= c; j++){
int color = a[i][j];
for(int x = 0; x < len; x++){
for(int y = 0; y < len; y++){
if(a[i+x][j+y] != color){
color = -1;
break;
}
}
}
if(color != -1) return len*len;
}
}
}
return 0;
}
int main(int argc, char** argv) {
scanf("%d%d",&r, &c);
for(int i = 0; i < r; i++)
for(int j = 0; j < c; j++)
scanf("%d",&a[i][j]);
printf("%d", solve());
return 0;
}
#include <stdio.h>
int main(){
int N,x;
while(scanf("%d%d",&N,&x)!=EOF){
int a[100];
int i,k=1;
for(i=1;i<=N;i++)
a[i]=i;
for(i=N;i>=1;i--){
k=(k+x-1)%i;
if(k==0)
k=i;//因为编号从1开始,若k==0 那么k==i
if(i>1)
printf("%d ",a[k]);
else printf("%d",a[k]);
for(int j=k;j<i;j++)
a[j]=a[j+1];//向前移位
}
printf("\n");
}
return 0;
}
#include <stdio.h>
int main()
{
int n, a, b, sum;
scanf("%d", &n);
a = 1;
b = a + 1;
sum = 0;
while(b != a+1 || sum < n){
if(sum < n){
b ++;
}else{
a ++;
b = a + 1;
}
sum = (a + b) * (b - a + 1) / 2;
if(sum == n){
printf("%d %d\n", a, b);
}
}
return 0;
}
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int *a = new int [n+1];
a[0] = 0;
for(int i = 1; i <= n; i++) {
a[i] = a[i-1] + i;
}
for(int i = 0; i <= n-2; i++) {
for(int j = i+1; j <= n; j++) {
if((a[j] - a[i]) == n) {
cout << i+1 << " " << j << endl;
} else if((a[j] - a[i]) > n) {
break;
}
}
}
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string s1,s2;
int count = 0; //记录次数
cin >> s1 >> s2; // 输入
for(int i = 0; i < s1.size() - 1; i++) //从第一位开始循环遍历,到倒数第二个字符结束
{
if(s1[i] != s2[i]) //如果遇到不相同的字符,则翻转后两位字符
{
count++;
if(s1[i] == 'o') s1[i] = '*';
else s1[i] = 'o';
if(s1[i + 1] == 'o') s1[i + 1] = '*';
else s1[i + 1] = 'o';
}
}
cout << count << endl; //遍历完成,输出
}
#include<cstdio>
const int N=1e2+5;
int main()
{
int numa[N],sum=0,num,temp,n;
scanf("%d",&n);//输入人数
for(int i=1;i<=n;i++)
scanf("%d",&numa[i]);//输入每个人的糖果数量
while(1){
num=1;
for(int i=2;i<=n;i++)//只要前后者任意一个不相等就是全局不等
if(numa[i]==numa[i-1])num++;
else break;
if(num==n)break;//如果每组对比相等数量与人数相等就是全局相等
for(int i=1;i<=n;i++)numa[i]/=2;//每人糖果数减半
temp = numa[1];
for(int i=1;i<n;i++)//前者加上后者的糖果数
numa[i]+=numa[i+1];
numa[n]+=temp;
for(int i=1;i<=n;i++)//查找含有奇数个糖果的人,把他们变为偶数
if(numa[i]%2==1){numa[i]++;sum++;}
}
printf("%d\n",sum);
}
#include<cstdio>
#include<iostream>
using namespace std;
string getS(char c) {
if (c == '0') return "1";
return "01";
}
int main() {
int n;
scanf("%d", &n);
string s = "0";
string s1 = "";
if (n != 0) {
while(n--) {
int len = s.size();
s1 = "";
for (int i = 0; i < len; i++) {
s1 += getS(s[i]);
}
s = s1;
}
cout << s1 << endl;
}
else cout << s << endl;
return 0;
}
using namespace std;
string s[100005];
bool cmp(string a,string b){
string s1 = a.substr(6,8);
string s2 = b.substr(6,8);
if(s1 != s2){
return s1>s2;
}else{
return a>b;
}
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
s[i].resize(18); //预先分配空间
scanf("%s",&s[i][0]); //读入string
//cin>>s[i];
}
sort(s,s+n,cmp);
for(int i=0;i<n;i++){
printf("%s\n",s[i].c_str());//输出必须用.c_str()
//cout<<s[i]<<endl;
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int radix, n, sum, a[1001];//定义变量进制数,输入字符串长度,总步数,字符串存放的整数数组
string s;
//判断是否是回文数
bool palindromic(int n)
{
for (int i = 1; i <= n / 2; i++)
if (a[i] != a[n - i + 1])
return false;
return true;
}
//两数相加
int add(int n)
{
int c[1001] = { 0 };//定义临时数组,表示两数的和
for (int i = 1; i <= n; i++)//进制数相加
{
c[i] = a[i] + a[n - i + 1] + c[i];
c[i + 1] += c[i] / radix;
c[i] %= radix;
}
if (c[n + 1])//保留进位
n++;
for (int i = n; i >= 1; i--)
{
a[i] = c[i];
}
return n;
}
int main()
{
cin >> radix >> s;
n = s.size();
for (int i = 1; i <= n; i++)//将字符串转化为整数数组
{
if (s[i - 1] < 65)
a[i] = s[i - 1] - '0';
else
a[i] = s[i - 1] - 55;
}
while (sum <= 30)
{
if (palindromic(n))
{
cout << "STEP=" << sum << endl;
return 0;
}
sum++;
n = add(n);
}
cout << "Impossible!" << endl;
return 0;
}
#include<iostream>
#include<cstring>
using namespace std;
struct tstudent
{
string name;
string num;
char sex;
}student[1010];
int findstudent(struct tstudent student[], int n, string data)//判断是否有某个学生的学号或名字等于data,如果有,函数返回该学生在student数组中的序号,否则返回-1
{
int i;
if(data=="")
return -1;
for(i=0;i<n;i++)
{
if(student[i].name==data||student[i].num==data)
return i;
}
return -1;
}
void solve(struct tstudent student[], int n, int m)//输入两个人的信息X、Y。通过调用findstudent函数判断这两个人能否成为舞伴
{
string x,y;
int a,b;
for (int i=0; i<m; i++)
{
cin>>x>>y;
a=findstudent(student,n,x);
b=findstudent(student,n,y);
if(a==-1||b==-1)
return;
else
{
if(student[a].sex!=student[b].sex)
cout<<"Y"<<endl;
else
cout<<"N"<<endl;
}
}
}
int main()
{
int n, m;
cin>>n;
int i;
for(i=0;i<n;i++)
{
cin>>student[i].name>>student[i].num>>student[i].sex;
}
cin>>m;
solve(student,n,m);
return 0;
}
#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;
}
#include<iostream>
#include<vector>
using namespace std;
struct ditan
{
int a, b, g, k,num;
};
int main()
{
int n,x,y,num=0;
cin >> n;
vector<ditan>arr(n + 1);
for (int i = 1; i <= n; i++)
{
cin >> arr[i].a >> arr[i].b >> arr[i].g >> arr[i].k;
arr[i].num = i;
}
cin >> x >> y;
for (int i = 1; i <= n; i++)
{
if (x >= arr[i].a&&x <= arr[i].a + arr[i].g&&y >= arr[i].b&&y <= arr[i].b + arr[i].k)
num = arr[i].num;
}
if (num == 0)
cout << -1;
else
cout << num;
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,k,m,n,t,a[10],b[10];
scanf("%d",&m);
for(i=0; i<m; i++)
{
scanf("%d",&n);
for(j=0; j<n; j++)
scanf("%d",&a[j]);
for(j=0; j<n; j++)
scanf("%d",&b[j]);
for(j=0; j<n-1; j++)
{
for(k=0; k<n-j-1; k++)
{
if(a[k]<a[k+1])
{
t=a[k];
a[k]=a[k+1];
a[k+1]=t;
}
if(b[k]>b[k+1])
{
t=b[k];
b[k]=b[k+1];
b[k+1]=t;
}
}
}
int sum=0;
for(j=0; j<n; j++)
sum+=a[j]*b[j];
printf("%d\n",sum);
}
return 0;
}