当前位置:   article > 正文

Codeforces 110C Lucky Sum Of Digits 暴力_【c系列3.8】lucky sum of digits

【c系列3.8】lucky sum of digits

点击打开链接

题意:求digit和为n(n<=1e6)&&只含有4,7的最小数字
假设最后有p个4,q个7 为了最小:4排在前面,7排在后面,求出4,7个数即可
4p+7q=n 枚举q,p=(n-7q)/4,数字尽量小->位数p+q尽量小,q尽量小即可. 

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=2e3+20;
  4. int n;
  5. bool flag;
  6. int main()
  7. {
  8. while(cin>>n)
  9. {
  10. bool flag=false;
  11. int p;
  12. int index=1e7,a,b;
  13. for(int q=0;q<=n/7;q++)
  14. {
  15. if((n-7*q)%4==0)//p为整数
  16. {
  17. flag=true;
  18. p=(n-7*q)/4;
  19. if(index>p+q)//位数尽量小
  20. {
  21. index=p+q;
  22. a=p;
  23. b=q;
  24. }
  25. }
  26. }
  27. if(flag==false)
  28. cout<<-1;
  29. else
  30. {
  31. for(int i=1;i<=a;i++)
  32. cout<<4;
  33. for(int i=1;i<=b;i++)
  34. cout<<7;
  35. }
  36. cout<<endl;
  37. }
  38. return 0;
  39. }



本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号