HDU 1271整数对
生活随笔
收集整理的這篇文章主要介紹了
HDU 1271整数对
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
整數對
Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1006????Accepted Submission(s): 357
所以現在小希希望你編寫一個程序,來幫助她找到盡可能多的解。
例如,Gardon想的是A=31,B=3 告訴小希N=34,
小希除了回答31以外還可以回答27(27+7=34)所以小希可以因此而得到一個額外的糖果。 Input 輸入包含多組數據,每組數據一行,包含一個數N(1<=N<=10^9),文件以0結尾。 Output 對于每個輸入的N,輸出所有符合要求的解(按照大小順序排列)如果沒有這樣的解,輸出"No solution." Sample Input 34
152
21
0 Sample Output 27 31 32
126 136 139 141
No solution.
/*
Name:
Copyright:
Author:
Date: 05/10/11 13:42
Description:
*/
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
int s[100];
int main(int argc, char *argv[])
{
int n,a,b,c,count;
while(scanf("%d",&n)&&n)
{
count = 0;
if(n<=10) { printf("%d\n",n); continue;}
for(int i=1;i<=n;i*=10)
{
c=n/i/11;
b=n/i%11;
if(b<10&&(b!=0 || c!=0))
{
a =n-(b+c*11)*i;
a/=2;
if(a*2+(b+c*11)*i==n)
s[++count]= a+b*i+c*10*i;
}
b--;
if(b>=0&&(b!=0 || c!=0))
{
a =n-(b+c*11)*i;
a/=2;
if(a*2+(b+c*11)*i==n)
s[++count]=a+b*i+c*10*i;
}
}
if(count==0) puts("No solution.");
else
{
sort(s+1,s+count+1);
printf("%d",s[1]);
for(int i=2;i<=count;i++)
{
printf(" %d",s[i]);
}
puts("");
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
轉載于:https://www.cnblogs.com/one--world--one--dream/archive/2011/10/05/2199408.html
總結
以上是生活随笔為你收集整理的HDU 1271整数对的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android开发基础_列表视图一(Li
- 下一篇: MVC3教程之新手入门(转)