sgu 193
2015-03-11 18:38
155 查看
给定一个数k,找出最大的数b(1<=b<=n/2),使gcd(k,b)=1
若k为奇数 b=(k-1)/2
若k为偶数
2.1. 若k/2为奇数 b=k/2-2
2.2. 若k/2为偶数 b=k/2-1
若k为奇数 b=(k-1)/2
若k为偶数
2.1. 若k/2为奇数 b=k/2-2
2.2. 若k/2为偶数 b=k/2-1
#include<cstdio> #include<cstdlib> #include<cstring> #include<ctime> #include<cmath> #include<iostream> #include<algorithm> const int MAXL = 2005 , base = 10; struct bignumbers { int l; int num[MAXL]; void digital() { int i; for(i = l; i > 0 ;i--) if(num[i]) break; l = i; } void read() { char s[MAXL] = {'\0'}; scanf("%s",s); l = strlen(s); for(int i = 1; i <= l ; i++) num[i] = s[l - i] - '0'; } void prt() { for(int i = l; i >= 1; i--) printf("%c",num[i] + '0'); if(!l)printf("0"); } void div2() { for(int i = l; i >= 1;i--) { if(num[i]&1) num[i-1] += base; num[i] >>= 1; } num[0] = 0; digital(); } void minus(int k) { num[1] -= k; for(int i = 1 ; i <= l; i++) { if(num[i] < 0) { num[i] += base; num[i+1]--; } else break; } digital(); } }k; int main() { #ifndef ONLINE_JUDGE freopen("sgu193.in","r",stdin); freopen("sgu193.out","w",stdout); #endif k.read(); if(k.num[1]&1) { k.minus(1); k.div2(); } else { k.div2(); if(k.num[1]&1)k.minus(2); else k.minus(1); } k.prt(); #ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout); #endif }
相关文章推荐
- sgu 193 分类: sgu 2015-03-11 18:38 45人阅读 评论(0) 收藏
- sgu 193 Chinese Girls' Amusement
- sgu 193
- sgu 193 Chinese Girls' Amusement
- SGU193 Chinese Girls' Amusement(数论,约瑟夫环问题)
- sgu 193
- Digging into Google Notebook javascript http://blogs.zdnet.com/Google/?p=193
- 集合类... 分类: java 2009-11-02 14:22 193人阅读 评论(0) 收藏
- 【sgu】104 解题报告
- uva 193
- SGU 104 Little Shop of Flowers 翻译 题解
- SGU 134 Centroid
- SGU105
- SGU 112 a^b - b^a
- 193 - Graph Coloring(*****)推荐入门
- [SGU102 Coprimes]
- [SGU280 Trade centers]
- SGU 135
- SGU 225 Little Knights
- SGU 298. King Berl VI