A - Chinese Girls' Amusement ZOJ - 2313(大数)
You must have heard that the Chinese culture is quite different from that of Europe or Russia. So some Chinese habits seem quite unusual or even weird to us.
So it is known that there is one popular game of Chinese girls. N girls stand forming a circle and throw a ball to each other. First girl holding a ball throws it to the K-th girl on her left (1 <= K <= N/2). That girl catches the ball and in turn throws it to the K-th girl on her left, and so on. So the ball is passed from one girl to another until it comes back to the first girl. If for example N = 7 and K = 3, the girls receive the ball in the following order: 1, 4, 7, 3, 6, 2, 5, 1.
To make the game even more interesting the girls want to choose K as large as possible, but they want one condition to hold: each girl must own the ball during the game.
This problem contains multiple test cases!
The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.
The output format consists of N output blocks. There is a blank line between output blocks.
Input
Input file contains one integer number N (3 <= N <= 10^2000) - the number of Chinese girls taking part in the game.
Output
Output the only number - K that they should choose.
Sample Input
2
7
6
Sample Output
3
1
//大数加和大数除再加上找规律
//总体上分为两种情况:
//(1) 如果n是奇数的话,K=(n-1)/2
//(2) 如果n是偶数又分两种情况:(2.1) 如果n/2是偶数的话 K=n/2-1 (2.2) 如果n/2是奇数的话 K=n/2-2
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<vector>
#include<math.h>
#include<cstdio>
#include<sstream>
#include<numeric>//STL数值算法头文件
#include<stdlib.h>
#include <ctype.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<functional>//模板类头文件
using namespace std;
typedef long long ll;
const int maxn=110000;
const int INF=0x3f3f3f3f;
void jminus(int a[],int len,int b)
{
a[len-1]-=b;
for(int i=len-1; i>0; i--)//借位
{
if(a[i]<0)
{
a[i]+=10;
a[i-1]-=1;
}
}
}
void divide(int a[],int len )//大数除
{
for(int i=0; i<len-1; i++)
{
if(a[i]%2==0) a[i]=a[i]/2;
else
{
a[i]=a[i]/2;
a[i+1]+=10;
}
}
a[len-1]/=2;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
char str[2010];
cin>>str;
int len=strlen(str);
int a[len];
for(int i=0; i<len; i++)
a[i]=str[i]-'0';
if(a[len-1]%2==1)
{
divide(a,len);
int start=0;
while(a[start]==0) start++;
for(int i=start; i<len; i++)
cout<<a[i];
cout<<endl;
}
else
{
if(len==1)
{
int temp=a[0];
if(temp%4==2)//n是偶数,n/2是奇数的情况
{
divide(a,len);
jminus(a,len,2);
}
else//n是偶数,n/2是偶数
{
divide(a,len);
jminus(a,len,1);
}
}
else
{
int temp=a[len-1]+10*a[len-2];
if(temp%4==2)
{
divide(a,len);
jminus(a,len,2);
}
else
{
divide(a,len);
jminus(a,len,1);
}
}
int start=0;
while(a[start]==0) start++;
for(int i=start; i<len; i++)
cout<<a[i];
cout<<endl;
}
if(t>0)
cout<<endl;
}
return 0;
}
A - Chinese Girls' Amusement ZOJ - 2313(大数)的更多相关文章
- 数学+高精度 ZOJ 2313 Chinese Girls' Amusement
题目传送门 /* 杭电一题(ACM_steps 2.2.4)的升级版,使用到高精度: 这次不是简单的猜出来的了,求的是GCD (n, k) == 1 最大的k(1, n/2): 1. 若n是奇数,则k ...
- Acdream Chinese Girls' Amusement
A - Chinese Girls' Amusement Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Jav ...
- ACdream 1210 Chinese Girls' Amusement(高精度)
Chinese Girls' Amusement Time Limit:1000MS Memory Limit:64000KB 64bit IO Format:%lld & ...
- ACDream:1210:Chinese Girls' Amusement【水题】
Chinese Girls' Amusement Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Oth ...
- 2016NEFU集训第n+5场 A - Chinese Girls' Amusement
Description You must have heard that the Chinese culture is quite different from that of Europ ...
- zoj 2313 Chinese Girls' Amusement 解题报告
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1313 题目意思:有 N 个人(编号依次为1~N)围成一个圆圈,要求求 ...
- acdream 1210 Chinese Girls' Amusement (打表找规律)
题意:有n个女孩围成一个圈从第1号女孩开始有一个球,可以往编号大的抛去(像传绣球一样绕着环来传),每次必须抛给左边第k个人,比如1号会抛给1+k号女孩.给出女孩的人数,如果他们都每个人都想要碰到球一次 ...
- SGU 193.Chinese Girls' Amusement
/* 实际上就是求一个k,满足k<=n/2,且gcd(n,k)=1 如果n为奇数,k为[n/2] 如果n为偶数,k=n/2-1-(n/2)%2 */ #include <iostream& ...
- 训练赛第一场A题 (ZOJ 2313)
解题报告:n个人围坐成一圈,并且将这n个人从1到n编号,然后编号为1 的人手上有一个物品,将这个物品往向左传递给第k个人,1<=k<=n/2,当这个物品再次传到编号为1 的人的手上时,游戏 ...
随机推荐
- Idea Ant 打开发包
简介: http://ju.outofmemory.cn/entry/19239 语法: https://wenku.baidu.com/view/a0e00315866fb84ae45c8d9d.h ...
- NGINX: 反向代理 Nexus
Nginx 反向代理 nexus 的服务, 一直卡在 Initialize... 解决方式是添加一个 header X-Forwarded-Proto: proxy_set_header X-Forw ...
- java提取SVN提交log
http://wiki.svnkit.com/Printing_Out_Repository_History 这个介绍的相当详细. 总之就是要使用SVNKit包,下载地址.http://svnkit. ...
- 23、redis如何实现主从复制?以及数据同步机制?
redis主从复制 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或 ...
- HDU 2199 二分
我们可以发现这个函数是单增的,那么这样二分就好了. 反思:刚转C++,不会用scanf读入实数.(scanf("%lf",&y)) //By BLADEVIL #inclu ...
- .net XmlHelper xml帮助类
using System.Data; using System.IO; using System.Xml; using System.Xml.Serialization; /// <summar ...
- Python第三方库wordcloud(词云)快速入门与进阶
前言: 笔主开发环境:Python3+Windows 推荐初学者使用Anaconda来搭建Python环境,这样很方便而且能提高学习速度与效率. 简介: wordcloud是Python中的一个小巧的 ...
- 中断中处理延时及一些函数的调用规则(中断调i2c驱动有感)--中断中的延迟delay与printk函数的冲突【转】
转自:http://blog.csdn.net/psvoldemort/article/details/8222371 1,中断处理程序中不能使用有睡眠功能的函数,如ioremap,kmalloc,m ...
- linux-open-source-development-tools【重点】
https://www.pluralsight.com/blog/software-development/linux-open-source-development-tools https://ww ...
- C++ Primer读书笔记
以前阅读学习C++ Primer时的习题代码(当时代码风格格式比较渣): https://github.com/liyuan989/exercise/tree/master/c%2B%2B%20pri ...