跟奥巴马一起画方块&&查验身份证&&集合相似度

 

 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,col;
char c;
int main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(0);
    std::cin>>n>>c;
    if(n&1) col = (n+1)>>1;
    else col = n >> 1;
    for(int i = 0; i < col; i++)
    {
        for(int j = 0; j < n; j++)
            std::cout<<c;
        std::cout<<'\n';
    }
    return 0;
}

 

 

 

 

 简单题,不清楚为什么把不合法的先存储,最后再输出会wa,orz,玄学。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,total;
char str[110][20];
int len[20];
int sum,a[110][20];
int p[20] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char mp[] = {'1','0','X','9','8','7','6','5','4','3','2'};
int main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(0);
    std::cin>>n;

    for(int i = 0; i < n; i++)
    {
        std::cin>>str[i];
        len[i] = strlen(str[i]);
    }
 //   for(int i = 0; i < n; i++) std::cout<<str[i][17]<<" "; std::cout<<'\n';
 //   for(int i = 0; i < 11; i++) std::cout<<mp[i]<<" "; std::cout<<'\n';
    for(int i = 0; i < n; i++)
    {
        bool flag = true;
        for(int j = 0; j < len[i]-1; j++)
        {
            int t = str[i][j] - '0';
            if(t >= 0 && t <= 9) a[i][j] = t;
            else flag = false, j = len[i];
        }

        if(!flag)  //如果前17位存在不是数字,直接输出
            std::cout<<str[i]<<'\n';
        else
        {
            sum = 0;
            for(int j = 0; j < len[i] - 1; j++)
                sum += p[j]*a[i][j];
            int mod = sum%11;
            if(mp[mod] == str[i][17])  //检验最后一位,合法
                total ++;
            else   //不合法
                std::cout<<str[i]<<'\n';
        }
    }

    if(total == n) std::cout<<"All passed"<<'\n';
    return 0;
}

 

 

#include <stdio.h>
#include <set>
using namespace std;
typedef long long ll;
int n,k,num,x,y,a;
set<int>s[55];
set<int>total;
int main()
{
    scanf("%d",&n);
    for(int i = 1; i <= n; i++)
    {
        scanf("%d",&num);
        for(int j = 0; j < num; j++)
        {
            scanf("%d",&a);
            s[i].insert(a);
        }
    }
    scanf("%d",&k);
    for(int i = 1; i <= k; i++)
    {
        total.clear();
        int flag = 0;
        scanf("%d%d",&x,&y);
        int lenx = s[x].size(), leny = s[y].size();
        set<int>::iterator it;
        for(it = s[x].begin(); it != s[x].end(); it++)
            if(s[y].find(*it)!=s[y].end())
                flag++;    //共有的

        int yy = lenx + leny - flag;   //两个集合总共的元素个数
        double ans = (100.0)*flag/yy;
        printf("%.2f%\n",ans);
    }
    return 0;
}

  

posted @ 2020-02-03 17:19  留幸愉  阅读(213)  评论(0编辑  收藏  举报