csust-8.3组队训练-Gym 101853(二星题)全题解

目录

 

A - Zero Array

B - New Assignment

C - Intersections

D - Balloons

E - Maximum Sum

F - Working Time

G - Hard Equation

H - Cube

I - Circles

J - Smallest Difference

K - Citations


A - Zero Array

 Gym - 101853A 

题目链接https://codeforces.com/gym/101853/problem/A

#include<bits/stdc++.h>
#define ll long long
#define lson l,m,cnt<<1
#define rson m+1,r,cnt<<1|1
//priority_queue <int,vector<int>,greater<int> > Q;//优先队列递增
//priority_queue<int>Q;//递减
using namespace std;
const int maxn = 1e5+10;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
const double eps = 1e-6;
int a[maxn];
int n,q,num,pos,v;
map<int,int>mp;
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        mp.clear();
        int ans=0;
        scanf("%d%d",&n,&q);
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
            if(a[i]&&!mp[a[i]]) ans++;
            mp[a[i]]++;
        }
        while(q--)
        {
            scanf("%d",&num);
            if(num==1)
            {
                scanf("%d%d",&pos,&v);
                if(a[pos]&&mp[a[pos]]==1) ans--;
                mp[a[pos]]--;
                if(v&&!mp[v]) ans++;
                mp[v]++;
                a[pos]=v;
            }
            if(num==2) printf("%d\n",ans);
        }
    }
}

B - New Assignment

 Gym - 101853B 

题目链接https://codeforces.com/gym/101853/problem/B

素数筛+网络流

#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
//#include<vetor>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
using namespace std;
typedef long long ll;
//typedef __int128 lll;
//const int N=100000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pil pair<int , ll>
#define pli pair<ll,int>
#define pdl pair<double,ll>
#define pld pair<ll,double>
#define pdd pair<double,double>
#define iput(n) scanf("%d",&n)
#define iiput(a,n) scanf("%d%d",&a,&n)
#define iiiput(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define dput(n) scanf("%lf",&n)
#define llput(n) scanf("%lld",&n)
#define cput(n) scanf("%s",n)
#define puti(n) printf("%d\n",n)
#define putll(n) printf("%lld\n",n)
#define putd(n) printf("%lfd\n",n)
#define _cls(n) memset(n,0,sizeof(n))
#define __cls(n) memset(n,0x3f,sizeof(n))
#define lc rt << 1
#define rc rt <<1|1
#define debug(x) cout << "[ " << x << " ]" << endl
//priority_queue <int,toector<int>,greater<int> > Q;//优先队列递增
//priority_queue<int>Q;//递减
//map<ll,ll>mp;
//set<ll>st;
//stack<>st;
//queue<>Q;
#define F first
#define S second
//#define pb push_back
#define PB push_back
#define MP make_pair
#define ALL(x) begin(x), end(x)
#define SZ(x) (int)(x).size()
/***********************************************/
//加速输入挂
# define IOS ios::sync_toalith_stdio(false); cin.tie(0);cout.tie(0)
# define FOR(i,a,n) for(int i=a; i<=n; ++i)
//求二进制中1的个数
//__builtin_popcount(n);
//求2^k
//#define (ll)Potoal(2,k) (1LL<<k)
#define to_1(n) __builtin_popcount(n)
//树状数组
#define lotoalbit(x) (x&-x)
//#ifdef DEBUG
#define fin freopen("input.in", "r", stdin)
#define fout freopen("output.out", "toal", stdout);
//#endif
//手动扩栈
#pragma comment(linker,"/STACK:102400000,102400000")

const int maxn = 1e5 + 5;
const int N  = 1e6 + 7;

int t, n;
int a[maxn];
char op[maxn][2];
vector<int>k[maxn * 10];
vector<int> to;

int noprime[maxn * 10], pcnt, p[maxn * 10];

void isprime()
{
    pcnt = 0;
    memset(noprime, 0, sizeof(noprime));
    noprime[0] = noprime[1] = 1;
    for (int i = 2; i < N; ++i)
    {
        if (!noprime[i])
        {
            noprime[i] = pcnt;
            p[pcnt++] = i;
        }
        for (int j = 0; j < pcnt && i * p[j] < N; ++j)
        {
            noprime[i * p[j]] = 1;
            if (i % p[j] == 0)break;
        }
    }
}

struct edge
{
    int to, toal, nxt;
} e[maxn * 10];
int head[maxn], cnt;
int iter[maxn];

void  add_edge(int u, int to, int toal)
{
    e[cnt].to = to;
    e[cnt].toal = toal;
    e[cnt].nxt = head[u];
    head[u] = cnt++;

    e[cnt].to = u;
    e[cnt].toal = 0;
    e[cnt].nxt = head[to];
    head[to] = cnt++;
}

void init(int n)
{
    cnt = 0;
    memset(head,-1,sizeof head);
    for (int i = 0; i <= n + 1; i++) k[i].clear();
}

int dis[maxn];
int BFS(int s, int t)
{
    memset(dis,-1,sizeof dis);
    dis[s] = 0;
    queue<int>q;
    q.push(s);
    while (!q.empty())
    {
        int u = q.front();
        q.pop();
        for (int i = head[u]; ~i; i = e[i].nxt)
        {
            int to = e[i].to;
           // cout << to << endl;
            if (dis[to] == -1 && e[i].toal > 0)
            {
                dis[to] = dis[u] + 1;
                q.push(to);
            }
        }
    }
    return dis[t] > -1;
}

int DFS(int s, int t, int f)
{
    if (s == t) return f;
    for (int &i = iter[s]; ~i; i = e[i].nxt)
    {
        int to = e[i].to;
        int toal = e[i].toal;
        //cout << toal << endl;
        if (toal > 0 && dis[to] == dis[s] + 1)
        {
            int flotoal = DFS(to, t, min(f, e[i].toal));
            if (flotoal > 0)
            {
                e[i].toal -= flotoal;
                e[i ^ 1].toal += flotoal;
                return flotoal;
            }
        }
    }
    return 0;
}

int Dinic(int s, int t)
{
    int ans = 0, tmp;

    while (BFS(s, t))
    {
        for (int i = 0; i <= n; i++) iter[i] = head[i];
        while (tmp = DFS(s, t, INF))
        {
            ans += tmp;
        }
    }
    return ans;
}

void init(int x, int pos)
{
    if (x == 1) return;
    for (int i = 0; i < pcnt; i++)
    {
        if (x < p[i]) return;
        if (noprime[x] != 1 || x == 3)
        {
            k[noprime[x]].push_back(pos);
            return;
        }
        if (x % p[i] == 0) k[i].push_back(pos);
        while (x % p[i] == 0)
        {
            x /= p[i];
        }
    }
}

void soltoe(int x, int pos)
{
    if (x == 1) return;
    for (int i = 0; i < pcnt; i++)
    {
        if (x < p[i]) return;
        if (noprime[x] != 1)
        {
            i = noprime[x];
            for (int j = 0; j < k[i].size(); j++)
            {
                add_edge(k[i][j], pos, 1);
            }
            return;
        }
        if (x % p[i] == 0)
        {
            for (int j = 0; j < k[i].size(); j++)
            {
                add_edge(k[i][j], pos, 1);
            }
        }
        while (x % p[i] == 0)
        {
            x /= p[i];
        }
    }
}

int main()
{

    isprime();
    scanf("%d", &t);
    while (t--)
    {
        scanf("%d", &n);
        init(n + 1);
        for (int i = 1; i <= n; i++)
        {
            scanf("%d", &a[i]);
        }
        for (int i = 1; i <= n; i++)
        {
            scanf("%s", op[i]);
        }

        for (int i = 1; i <= n; i++)
        {
            if (op[i][0] == 'F') init(a[i], i);
        }
        for (int i = 1; i <= n; i++)
        {
            if (op[i][0] == 'M') soltoe(a[i], i);
        }
        for (int i = 1; i <= n; i++)
        {
            if (op[i][0] == 'F')
            {
                add_edge(0, i, 1);
            }
            else
            {
                add_edge(i, n + 1, 1);
            }
        }
        printf("%d\n", n - Dinic(0, n + 1));
    }
    return 0;
}

C - Intersections

 Gym - 101853C 

题目链接https://codeforces.com/gym/101853/problem/C

线段树求逆序对

#include <cstdio>
#define ll long long
struct st
{
	int l, r;
	ll w;
}tree[100050 * 4];
ll sum = 0;
int a, vis[100050];
void build(int now, int l, int r);
ll ask(int l, int r, int now);
void change(int s, int now);
int main()
{
	int n, t, ts;
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		for (int i = 1; i <= n; i++) {
			scanf("%d", &ts);
			vis[ts] = i;
		}
		build(1, 1, n);
		sum = 0;
		for (int i = 1; i <= n; i++) {
			scanf("%d", &a);
			sum += ask(vis[a], n, 1);        //加上该点的逆序对数
			change(vis[a], 1);               //更新该点的数据
		}
		printf("%lld\n", sum);
	}
	return 0;
}
void build(int now, int l, int r)
{
	tree[now].l = l, tree[now].r = r;
	if (l == r) {
		tree[now].w = 0;
		return;
	}
	int mid = (l + r) >> 1;
	build(now * 2, l, mid);
	build(now * 2 + 1, mid + 1, r);
	tree[now].w = tree[now * 2].w + tree[now * 2 + 1].w;
}
ll ask(int l, int r, int now)
{
	if (tree[now].l >= l && tree[now].r <= r) {
		return tree[now].w;
	}
	int mid = (tree[now].r + tree[now].l) >> 1;
	ll ans = 0;
	if (l <= mid) ans += ask(l, r, now * 2);
	if (r > mid) ans += ask(l, r, now * 2 + 1);
	return ans;
}
void change(int s, int now)
{
	if (tree[now].l >= s && tree[now].r <= s) {
		tree[now].w = 1;                           //该点存在
		return;
	}
	int mid = (tree[now].r + tree[now].l) >> 1;
	if (s <= mid) change(s, now * 2);
	if (s > mid) change(s, now * 2 + 1);
	tree[now].w = tree[now * 2].w + tree[now * 2 + 1].w;
}

D - Balloons

 Gym - 101853D 

题目链接https://codeforces.com/gym/101853/problem/D

#include <bits/stdc++.h>
using namespace std;
const int mac = 1e3 + 10;
char s[mac];
int num[mac], vis[mac], a[mac], b[mac];
int main()
{
	int t, n;
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		for (int i = 1; i <= n; i++) {
			scanf("%d", &a[i]);
		}
		int ans = 0;
		for (int i = 1; i <= n; i++) {
			if (a[i]) ans++;
		}
		printf("%d\n", ans);
	}
	return 0;
}

E - Maximum Sum

 Gym - 101853E 

题目链接https://codeforces.com/gym/101853/problem/E

状压DP

#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=100000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pil pair<int , ll>
#define pli pair<ll,int>
#define pdl pair<double,ll>
#define pld pair<ll,double>
#define pdd pair<double,double>
#define iput(n) scanf("%d",&n)
#define iiput(a,n) scanf("%d%d",&a,&n)
#define iiiput(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define dput(n) scanf("%lf",&n)
#define llput(n) scanf("%lld",&n)
#define cput(n) scanf("%s",n)
#define puti(n) printf("%d\n",n)
#define putll(n) printf("%lld\n",n)
#define putd(n) printf("%lfd\n",n)
#define _cls(n) memset(n,0,sizeof(n))
#define __cls(n) memset(n,0x3f,sizeof(n))
#define lc rt << 1
#define rc rt <<1|1
#define debug(x) cout << "[ " << x << " ]" << endl
//priority_queue <int,vector<int>,greater<int> > Q;//优先队列递增
//priority_queue<int>Q;//递减
//map<ll,ll>mp;
//set<ll>st;
//stack<>st;
//queue<>Q;
#define F first
#define S second
#define pb push_back
#define PB push_back
#define MP make_pair
#define ALL(x) begin(x), end(x)
#define SZ(x) (int)(x).size()
/***********************************************/
//加速输入挂
# define IOS ios::sync_with_stdio(false); cin.tie(0);cout.tie(0)
# define FOR(i,a,n) for(int i=a; i<=n; ++i)
//求二进制中1的个数
//__builtin_popcount(n);
//求2^k
//#define (ll)Pow(2,k) (1LL<<k)
#define to_1(n) __builtin_popcount(n)
//树状数组
#define lowbit(x) (x&-x)  
//#ifdef DEBUG
#define fin freopen("input.in", "r", stdin)
#define fout freopen("output.out", "w", stdout);
//#endif
//手动扩栈
#pragma comment(linker,"/STACK:102400000,102400000")
const int maxn = 1e5 + 7;
int n  , m ;

int dp[20][maxn];
int mp[20][20];

bool fit(int x){
    if(x & (x << 1)) return 1;
    return 0;
}

bool fit(int x,int y){
    if(x & y) return 0;
    if(x & (y << 1) ) return 0;
    if(x & (y >> 1) ) return 0;
    return 1;
}

int cnt[maxn];

int main(int argc, char const *argv[])
{
    IOS;
    int t;
    cin >> t;
    while(t--){
        int n ;
        cin >> n ;
        memset(dp,0,sizeof dp);
        _cls(cnt);
        for(int i= 1;i <= n ;i ++){
            for(int j = 1; j <= n;j ++) 
                cin >> mp[i][j];
        }
        int top = 0;
        for(int i = (1 << n) - 1;i >= 0;i --){
            if(fit(i)) continue;
            cnt[top++] = i;
        }

        for(int i = 0;i < top;i ++){
            for(int j = 0;j < n;j ++){
                if((cnt[i] >> j) & 1)
                    dp[1][i] += mp[1][n - j];
            }
        }

        for(int i = 2;i <= n ;i ++){
            for(int j = 0;j < top ;j ++){
                for(int k = 0;k < top;k ++){
                    if(!fit(cnt[j],cnt[k])) continue;
                    int sum = 0;
                    for(int p = 0;p < n;p ++){
                        if((cnt[j] >> p) & 1) sum += mp[i][n - p];

                    }
                    dp[i][j] = max(dp[i][j],dp[i-1][k] + sum);
                }
            }
        }
        int res = 0;
        for(int i = 0;i < top;i ++) res = max(res,dp[n][i]);
            cout << res << endl;
    }
    return 0;
}

F - Working Time

 Gym - 101853F 

题目链接https://codeforces.com/gym/101853/problem/F

//#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=100000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
#define pii pair<int,int>
#define pll pair<ll,ll>
#define pil pair<int , ll>
#define pli pair<ll,int>
#define pdl pair<double,ll>
#define pld pair<ll,double>
#define pdd pair<double,double>
#define iput(n) scanf("%d",&n)
#define iiput(a,n) scanf("%d%d",&a,&n)
#define iiiput(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define dput(n) scanf("%lf",&n)
#define llput(n) scanf("%lld",&n)
#define cput(n) scanf("%s",n)
#define puti(n) printf("%d\n",n)
#define putll(n) printf("%lld\n",n)
#define putd(n) printf("%lfd\n",n)
#define _cls(n) memset(n,0,sizeof(n))
#define __cls(n) memset(n,0x3f,sizeof(n))
#define lc rt << 1
#define rc rt <<1|1
#define debug(x) cout << "[ " << x << " ]" << endl
//priority_queue <int,vector<int>,greater<int> > Q;//优先队列递增
//priority_queue<int>Q;//递减
//map<ll,ll>mp;
//set<ll>st;
//stack<>st;
//queue<>Q;
#define F first
#define S second
#define pb push_back
#define PB push_back
#define MP make_pair
#define ALL(x) begin(x), end(x)
#define SZ(x) (int)(x).size()
/***********************************************/
//加速输入挂
# define IOS ios::sync_with_stdio(false); cin.tie(0);cout.tie(0)
# define FOR(i,a,n) for(int i=a; i<=n; ++i)
//求二进制中1的个数
//__builtin_popcount(n);
//求2^k
//#define (ll)Pow(2,k) (1LL<<k)
#define to_1(n) __builtin_popcount(n)
//树状数组
#define lowbit(x) (x&-x)  
//#ifdef DEBUG
#define fin freopen("input.in", "r", stdin)
#define fout freopen("output.out", "w", stdout);
//#endif
//手动扩栈
#pragma comment(linker,"/STACK:102400000,102400000")
const int maxn = 2e5 + 7;
int n  , m ;

int main(int argc, char const *argv[])
{
    int t ;
    cin >> t ;
    while(t--){
        int n , m;
        cin >> n >> m;
        int nn = 0, mm = 0;
        for(int i = 1 ;i <= n ; i ++){
            int a, b , c, d;
           scanf("%d:%d %d:%d",&a,&b,&c,&d);
            c -= a, d -= b;
            if(d < 0) {
                c --;
                d += 60;
            }
            mm += d;
            nn += c;
        } 
        nn += mm/60;
        if(nn >= m) puts("YES");
        else puts("NO");
    }
    return 0;
}

G - Hard Equation

 Gym - 101853G 

题目链接https://codeforces.com/gym/101853/problem/G

EXBSGS算法

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<LL, LL> pLL;
typedef pair<LL, int> pli;
typedef pair<int, LL> pil;;
typedef pair<int, int> pii;
typedef unsigned long long uLL;
#define lson i<<1
#define rson i<<1|1
#define lowbit(x) x&(-x)
const double eps = 1e-8;
const int mod = 1e9 + 7;
const int maxn = 1e6 + 7;
const double pi = acos(-1);
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
int t, a, b, m;
unordered_map<LL, int> mp;
LL Mod_Pow(LL x, LL n, LL mod) {
	LL res = 1;
	while (n) {
		if (n & 1) res = res * x % mod;
		x = x * x % mod;
		n >>= 1;
	}
	return res;
}
int gcd(int a, int b) {
	return b == 0 ? a : gcd(b, a % b);
}
LL EXBSGS(int A, int B, int C) {
	A %= C, B %= C;
	if (B == 1) return 0;
	int cnt = 0;
	LL t = 1;
	for (int g = gcd(A, C); g != 1; g = gcd(A, C)) {
		if (B % g) return -1;
		C /= g, B /= g;
		t = t * A / g % C;
		cnt++;
		if (B == t) return cnt;
	}
	mp.clear();
	int m = ceil(sqrt(1.0 * C));
	LL base = B;
	for (int i = 0; i < m; i++) {
		mp[base] = i;
		base = base * A % C;
	}
	base = Mod_Pow(A, m, C);
	LL nw = t;
	for (int i = 1; i <= m + 1; i++) {
		nw = base * nw % C;
		if (mp.count(nw)) {
			return i * m - mp[nw] + cnt;
		}
	}
	return -1;
}
int main() {
	scanf("%d", &t);
	while (t--) {
		scanf("%d%d%d", &a, &b, &m);
		LL ans = EXBSGS(a, b, m);
		printf("%lld\n", ans);
	}
	return 0;
}

H - Cube

 Gym - 101853H 

题目链接https://codeforces.com/gym/101853/problem/H

#include <bits/stdc++.h>
using namespace std;
const int mac = 1e3 + 10;
char s[mac];
int num[mac], vis[mac], a[mac], b[mac];
int main()
{
	int t, n;
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		n /= 6;
		int ans = sqrt(n);
		printf("%d\n", ans);
	}
	return 0;
}

I - Circles

 Gym - 101853I 

题目链接https://codeforces.com/gym/101853/problem/I

#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
int main()
{
	int t;
	scanf("%d", &t);
	while (t--) {
		double a, b, d;
		scanf("%lf%lf%lf", &a, &b, &d);
		double s1 = 4 * pi * (sqrt(2.0) / 4.0 * d) * (sqrt(2.0) / 4.0 * d) - (d / 2.0) * (d / 2) * pi;
		double s2 = pi * (sqrt(2.0) / 4 * d) * (sqrt(2.0) / 4 * d) * 1.0 / 2 - sqrt(2.0) / 2 * d * sqrt(2.0) / 4 * d * 1.0 / 2;
		double ans = s1 - 4 * s2;
		printf("%.10lf\n", ans);
	}

	return 0;
}

J - Smallest Difference

 Gym - 101853J 

题目链接https://codeforces.com/gym/101853/problem/J

#include <bits/stdc++.h>
using namespace std;
const int mac = 1e4 + 10;
char s[mac];
int num[mac], vis[mac], a[mac], b[mac];
int main()
{
	int t, n;
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		for (int i = 1; i <= n; i++) {
			scanf("%d", &a[i]);
		}
		sort(a + 1, a + 1 + n);
		int j = 1, ans = 0;
		for (int i = 1; i <= n; i++) {
			while (a[i] - a[j]>1) {
				j++;
			}
			ans = max(ans, i - j + 1);
		}
		printf("%d\n", ans);
	}
	return 0;
}

K - Citations

 Gym - 101853K 

题目链接https://codeforces.com/gym/101853/problem/K

#include <bits/stdc++.h>
using namespace std;
char s[150];
char name[10][150], type[10][150];
int t, n;
int main()
{
	scanf("%d", &t);
	unordered_map<string, int>q;
	q["title"] = 2; q["author"] = 1; q["journal"] = 3;
	q["year"] = 4; q["volume"] = 5; q["number"] = 6; q["pages"] = 7;
	while (t--) {
		scanf("%d", &n);
		while (n--) {
			memset(name, '\0', sizeof(name));
			memset(type, '\0', sizeof(type));
			gets(s);
			while (s[0] != '@') {
				gets(s);
			}
			int num = 1, kn = 1;
			while (num <= 8) {
				int count = 0, count1 = 0;
				gets(s);
				num++;
				//printf("%s\n",s);
				int r = 0;
				while (s[r] > 'z' || s[r] < 'a') r++;
				while (s[r] <= 'z' && s[r] >= 'a') {
					type[num - 1][count++] = s[r];//you[num].type[count++]=ch;
					r++;
				}
				r += 2;
				while (s[r] != '}') {
					name[num - 1][count1++] = s[r];//you[num].name[count1++]=ch;
					if (s[r] == ',') kn++;
					r++;
				}
			}
			gets(s);
			// printf("%d\n",kn);
			int men = 1;
			while (1) {
				int vis[10];
				memset(vis, 0, sizeof(vis));
				for (int i = 1; i <= 8; i++) {
					if (!vis[i] && q[type[i]] == men) {
						vis[i] = 1;
						if (q[type[i]] == 1) {
							int len = strlen(name[i]);
							printf("%c%c. ", name[i][0], name[i][1]);
							for (int j = 2; j < len; j++) {
								if (name[i][j] == ' ') {
									printf("%c", name[i][j + 1]), kn--;
									if (kn == 0) printf(". ");
									else printf(", ");
								}
								else if (name[i][j] == ',') {
									j += 2;
									printf("%c%c. ", name[i][j], name[i][j + 1]);
								}
							}
						}
						else if (q[type[i]] == 2 || q[type[i]] == 3) {
							printf("%s", name[i]);//puts(name[i]);
							printf(". ");
						}
						else if (q[type[i]] == 4)
							printf("%s;", name[i]);
						else if (q[type[i]] == 5)
							printf("%s", name[i]);
						else if (q[type[i]] == 6)
							printf("(%s):", name[i]);
						else if (q[type[i]] == 7)
							printf("%s.", name[i]);
					}
				}
				men++;
				if (men == 8) {
					printf("\n"); break;
				}
			}
		}
	}
	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值