URAL 1658. Sum of Digits(简单dp)
来源:互联网 发布:java jar 资源文件 编辑:程序博客网 时间:2024/04/29 05:43
给你n,m。然后输出100位以内一个数字,每一位的和为n,每一位的平方和为m。
以n,m为dp[i][j]。pre[i][j]记录位置上的数字。
1658. Sum of Digits
Time limit: 2.0 second
Memory limit: 64 MB
Memory limit: 64 MB
Petka thought of a positive integer n and reported to Chapaev the sum of its digits and the sum of its squared digits. Chapaev scratched his head and said: “Well, Petka, I won't find just your number, but I can find the smallest fitting number.” Can you do the same?
Input
The first line contains the number of test cases t (no more than 10000). In each of the following tlines there are numbers s1 and s2 (1 ≤ s1, s2 ≤ 10000) separated by a space. They are the sum of digits and the sum of squared digits of the number n.
Output
For each test case, output in a separate line the smallest fitting number n, or “No solution” if there is no such number or if it contains more than 100 digits.
Sample
49 8112 96 107 9
9No solution1122111112
#include <algorithm>#include <iostream>#include <stdlib.h>#include <string.h>#include <iomanip>#include <stdio.h>#include <string>#include <queue>#include <cmath>#include <stack>#include <map>#include <set>#define eps 1e-8#define M 1000100#define LL __int64///#define LL long long#define INF 0x3f3f3ff#define PI 3.1415926535898#define MOD 1000000009const int maxn = 10100;using namespace std;int dp[910][8110];int pre[910][8110];void Pre(){ for(int i = 0; i <= 900; i++) for(int j = 0; j <= 8100; j++) dp[i][j] = 101; dp[0][0] = 0; for(int i = 1; i <= 900; i++) { for(int j = 1; j <= 8100; j++) { for(int k = 1; k<=9&&k<=i&&k*k<=j; k++) { if(i-k > j-k*k) break; if(dp[i][j] > dp[i-k][j-k*k]+1) { dp[i][j] = dp[i-k][j-k*k]+1; pre[i][j] = k; } } } }}int main(){ Pre(); int n, m; int T; cin >>T; while(T--) { scanf("%d %d",&n, &m); if(n>m || n > 900 || m > 8100 || dp[n][m] > 100 ) { cout<<"No solution"<<endl; continue; } int t; while(n&&m) { t = pre[n][m]; printf("%d",t); n -= t; m -= t*t; } cout<<endl; } return 0;}
0 0
- URAL 1658. Sum of Digits(简单dp)
- ural 1658. Sum of Digits
- URAL 1658. Sum of Digits
- 【URAL 1658】1658. Sum of Digits(DP)
- URAL 1658 Sum of Digits (DP) #by Plato
- Ural 1658 Sum of Digits
- Ural 1658 Sum of Digits
- timus 1658. Sum of Digits URAL 解题报告 DP 数字位数和……
- URAL 1206 Sum of Digits of the Sum of Numbers
- Ural-1014. Product of Digits(简单题)
- URAL1658 Sum of Digits(DP)
- Timus 1658. Sum of Digits
- ural 1014 Product of Digits
- URAL 1014 Product of Digits
- HDU3022:Sum of Digits
- HDU3022:Sum of Digits
- B. Sum of Digits
- Sum of Digits
- For循环 分号隔开的3部分的执行顺序。
- 动态规划
- ssh整合struts.xml的书写
- Android如何通过https协议下载自己的https网站上的文件/apk等
- In the beginning
- URAL 1658. Sum of Digits(简单dp)
- hadoop、hive、hbase的区别和应用场景
- 测试问题:C#连接SQL2000却报连接2005错误
- JavaScript设计模式-单例模式、模块模式
- linux 普通用户通过80端口启动tomcat
- 通过tcpdump抓包使用Wireshark --Android端
- ssh整合hibernate.xml的书写
- Oracle 获取当前日期及日期格式
- linux中的likely与unlikely