连续正整数的和.c 806 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include <stdio.h>
  2. int main() {
  3. int x;
  4. FILE *input = fopen("scpi.in", "r");
  5. FILE *output = fopen("scpi.out", "w");
  6. fscanf(input, "%d", &x);
  7. int start = 1, end = 2;
  8. int sum = start + end;
  9. int i;
  10. while (start < end) {
  11. if (sum == x) {
  12. fprintf(output, "%d=", x);
  13. for (i = start; i <= end; i++) {
  14. fprintf(output, "%d", i);
  15. if (i < end) {
  16. fprintf(output, "+");
  17. }
  18. }
  19. break;
  20. } else if (sum < x) {
  21. end++;
  22. sum += end;
  23. } else {
  24. sum -= start;
  25. start++;
  26. }
  27. }
  28. if (start >= end) {
  29. fprintf(output, "%d:NOANSWER", x);
  30. }
  31. fclose(input);
  32. fclose(output);
  33. return 0;
  34. }