﻿ HDU_6043_KazaQ&#39;s Socks - 鸿网互联

# HDU_6043_KazaQ&#39;s Socks

KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1890Accepted Submission(s): 1061 Problem Description KazaQ wears socks everyday. At the beginning, he has n pairs of socks

# KazaQ's Socks

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1890    Accepted Submission(s): 1061

Problem Description KazaQ wears socks everyday.

At the beginning, he has

Input The input consists of multiple test cases. (about

Output For each test case, output "Case #" in one line (without quotes), where

Sample Input 3 7 3 6 4 9

Sample Output Case #1: 3 Case #2: 1 Case #3: 2

Source 2017 Multi-University Training Contest - Team 1
• 循环，找规律
• 前n个顺序不变，从第n+1个开始长度为2n-2的循环
• 拿n=4为例
• 1 2 3 4 /1 2 3 /1 2 4 /1 2 3 /1 2 4 ....

 1 #include <iostream>
2 #include <string>
3 #include <cstdio>
4 #include <cstring>
5 #include <algorithm>
6 #include <climits>
7 #include <cmath>
8 #include <vector>
9 #include <queue>
10 #include <stack>
11 #include <set>
12 #include <map>
13 using namespace std;
14 typedef long long           LL ;
15 typedef unsigned long long ULL ;
16 const int    maxn = 1e5 + 10   ;
17 const int    inf  = 0x3f3f3f3f ;
18 const int    npos = -1         ;
19 const int    mod  = 1e9 + 7    ;
20 const int    mxx  = 100 + 5    ;
21 const double eps  = 1e-6       ;
22 const double PI   = acos(-1.0) ;
23
24 int main(){
25     // freopen("in.txt","r",stdin);
26     // freopen("out.txt","w",stdout);
27     LL T=0, n, k, ans;
28     while(~scanf("%lld %lld",&n,&k)){
29         if(k<=n){
30             ans=k;
31         }else{
32             k-=n;
33             LL m=k/(n-1);
34             if(m*(n-1)<k)m++;
35             k=k-(n-1)*(m-1);
36             ans=k;
37             if(!(m&1))
38                 if(k==n-1)
39                     ans++;
40
41         }
42         printf("Case #%lld: %lld\n",++T,ans);
43     }
44     return 0;
45 }

<