hdu 3443(水题,公式)Shift Number
2015-07-15 23:08
274 查看
题意:
给一个数n,求最小的数生成的shift number等于n。shift number就是一个数x,x*10,x*100…..这样的和。
思路
把那个公式处理一下,其实就是X*(形如11111….)这样的一个式子,那么找一个最大的11111….,x就是最小了。水题复杂度:
O(len(n))参考code:
/* #pragma warning (disable: 4786) #pragma comment (linker, "/STACK:0x800000") */ #include <cassert> #include <cctype> #include <cmath> #include <cstdio> #include <cstdlib> #include <cstring> #include <iostream> #include <sstream> #include <iomanip> #include <string> #include <vector> #include <list> #include <set> #include <map> #include <stack> #include <queue> #include <algorithm> #include <iterator> #include <utility> using namespace std; template< class T > T _abs(T n) { return (n < 0 ? -n : n); } template< class T > T _max(T a, T b) { return (!(a < b) ? a : b); } template< class T > T _min(T a, T b) { return (a < b ? a : b); } template< class T > T sq(T x) { return x * x; } template< class T > T gcd(T a, T b) { return (b != 0 ? gcd<T>(b, a%b) : a); } template< class T > T lcm(T a, T b) { return (a / gcd<T>(a, b) * b); } template< class T > bool inside(T a, T b, T c) { return a<=b && b<=c; } #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define F(i, n) for(int (i)=0;(i)<(n);++(i)) #define rep(i, s, t) for(int (i)=(s);(i)<=(t);++(i)) #define urep(i, s, t) for(int (i)=(s);(i)>=(t);--(i)) #define repok(i, s, t, o) for(int (i)=(s);(i)<=(t) && (o);++(i)) #define MEM0(addr) memset((addr), 0, sizeof((addr))) #define MP(x, y) make_pair(x, y) #define REV(s, e) reverse(s, e) #define SET(p) memset(pair, -1, sizeof(p)) #define CLR(p) memset(p, 0, sizeof(p)) #define MEM(p, v) memset(p, v, sizeof(p)) #define CPY(d, s) memcpy(d, s, sizeof(s)) #define READ(f) freopen(f, "r", stdin) #define WRITE(f) freopen(f, "w", stdout) #define SZ(c) (int)c.size() #define PB(x) push_back(x) #define ff first #define ss second #define ll long long #define ld long double #define pii pair< int, int > #define psi pair< string, int > #define ls u << 1 #define rs u << 1 | 1 #define lson l, mid, u << 1 #define rson mid, r, u << 1 | 1 const int maxn = 1e6+5; const ll INF = 0x3f3f3f3f3f3fLL; int main(){ //READ("in.txt"); ll n; while(scanf("%lld",&n)!=EOF && n){ ll x = 1; while(x <= n) x = x * 10 + 1; while(n % x != 0) x /= 10; printf("%lld\n",n / x); } }
相关文章推荐
- Java HttpClient使用
- RequireJS学习资料汇总
- Django 模板中引用静态资源(js,css等)
- 页面上动态编译及执行java代码
- 用P3P header解决iframe跨域访问cookie
- 将string转换成char型的一般方法
- python 多线程两种实现方式
- 2015071502 - 东北
- Windows Azure 保留已存在的虚拟网络外网IP(云服务)
- Android Studio 快捷键
- Android开发实战记录
- 通过Servlet生成验证码图片
- qt 工作实践经验
- 使用canvas与Paint在View中居中绘制文字
- ASP.NET 异步Web API + jQuery Ajax 文件上传代码小析
- 15-07-08 数组-- 投票选班长
- 自定义分节seekBar,类似stepView效果
- LeetCode每日一篇
- HashSet的实现原理
- HTML5 Web Workers之网站也能多线程的实现