HDOJ 5373 The shortest problem 【数论】
2015-08-14 19:31
323 查看
HDOJ 5373 The shortest problem 【数论】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5373题目给一个初始数据和重复次数
每一次都在初始数据末端连接上现有数据的各个位的和
之后对最后得出的数据除以11,如果可以整除输出Yes,否则输出No
可以被11整除的数有一个特征:
奇数位减去偶数位的数最后得出的数如果能被11整除,原数就可以被11整除,否则原数也不能被11整除
因此用sum保存之前的各个位之和,
遍历t次之后将dif与11取模即可
注意使用之前的位数为奇数或偶数,现在的位数为奇数或偶数来判断对最末尾的数是先加还是先减
提供队友的法二:
以358÷11为例:
所以对于每次得出的结果直接对11取模即可。。。不过还是要保存原先的每位的和
保证下次加入末尾的数据依然正确
就素酱紫。。。
#include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<vector> #include<queue> #include<set> using namespace std; #define clr(c) memset(c, 0, sizeof(c)); const int INF = 0x3f3f3f3f; typedef long long LL; int n, t, Case; int dif, len; int sum; int flag, num; int oddBefore, odd; int ll; void fun(int nn){ int ll = 0; int difsub = 0; int difplus = 0; flag = 1; while(nn){ num = nn % 10; difplus += flag*num; difsub += -1*flag*num; flag *= -1; sum += num; nn /= 10; ll++; } if(ll & 1) odd = true; else odd = false; if(odd == oddBefore){ dif += difsub; oddBefore = false; } else{ dif += difplus; oddBefore = true; } } int main(){ Case = 1; while(~scanf("%d%d", &n, &t)){ if(n == -1 && t == -1) break; printf("Case #%d: ", Case++); if(n == 0){ puts("Yes"); continue; } if(t == 0){ if(n % 11) puts("No"); else puts("Yes"); continue; } flag = 1, num = 0, dif = 0, sum = 0, ll = 0; int tempN = n; int difplus = 0; int difsub = 0; while(tempN){ num = tempN % 10; difplus += flag*num; difsub += -1*flag*num; flag *= -1; sum += num; tempN /= 10; ll++; } if(ll & 1){ oddBefore = true; dif = difplus; } else{ oddBefore = false; dif = difsub; } for(int i = 0; i < t; i++) fun(sum); if(dif % 11) puts("No"); else puts("Yes"); } return 0; }
相关文章推荐
- android 电容屏(二):驱动调试之基本概念篇
- HDOJ 5373 The shortest problem 【数论】
- ListView中requestLayout执行流程解析
- Selendroid inspector
- 如何在Android智能手机上捕获数据包?
- ACM最大公共子序列&&回文串
- 懒人科技,是福是祸?
- Hadoop实战之hadoop2.5.2完全分布式安装
- OC - NSValueAndNSNumber
- android 电容屏(一):电容屏基本原理篇
- 11.PHP 教程_PHP Switch 语句
- Dolls---hdu4160(最大匹配)
- vs2010常见的错误
- php最简单的注入与最简单的避免方式
- 算法题:A除以B
- Derivation of User Browsing Model
- JS的覆盖特性来解决文件冲突问题,css的加载问题
- swift--闭包
- win共享文件给xp系统
- C# DataGridView显示行号方法。